Skip to content

Commit 5d8cf13

Browse files
committed
适配 Android 16
1 parent 1eaf608 commit 5d8cf13

11 files changed

Lines changed: 149 additions & 464 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
1010
<uses-permission android:name="android.permission.INTERNET" />
1111

12-
<!-- 外部存储 -->
13-
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
14-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
12+
<!-- 发送通知权限(Android 13.0 新增的权限)-->
13+
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
14+
15+
<!-- 读取外部存储权限 -->
16+
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
1517

1618
<!-- 拍照权限 -->
1719
<uses-permission android:name="android.permission.CAMERA" />
@@ -180,12 +182,6 @@
180182
android:launchMode="singleTop"
181183
android:screenOrientation="portrait" />
182184

183-
<!-- 图片裁剪 -->
184-
<activity
185-
android:name=".ui.activity.common.ImageCropActivity"
186-
android:launchMode="singleTop"
187-
android:screenOrientation="portrait" />
188-
189185
<!-- 图片选择 -->
190186
<activity
191187
android:name=".ui.activity.common.ImageSelectActivity"

app/src/main/java/com/hjq/demo/ui/activity/account/PersonalDataActivity.java

Lines changed: 7 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,21 @@
11
package com.hjq.demo.ui.activity.account;
22

33
import android.net.Uri;
4-
import android.os.Build;
54
import android.view.View;
65
import android.view.ViewGroup;
76
import android.widget.ImageView;
8-
import androidx.annotation.NonNull;
97
import com.bumptech.glide.load.MultiTransformation;
108
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
119
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
1210
import com.hjq.demo.R;
1311
import com.hjq.demo.aop.SingleClick;
1412
import com.hjq.demo.app.AppActivity;
15-
import com.hjq.demo.http.api.UpdateImageApi;
1613
import com.hjq.demo.http.glide.GlideApp;
17-
import com.hjq.demo.http.model.HttpData;
18-
import com.hjq.demo.ui.activity.common.ImageCropActivity;
1914
import com.hjq.demo.ui.activity.common.ImagePreviewActivity;
2015
import com.hjq.demo.ui.activity.common.ImageSelectActivity;
2116
import com.hjq.demo.ui.dialog.common.AddressDialog;
2217
import com.hjq.demo.ui.dialog.common.InputDialog;
23-
import com.hjq.http.EasyHttp;
24-
import com.hjq.http.listener.HttpCallbackProxy;
25-
import com.hjq.http.model.FileContentResolver;
2618
import com.hjq.widget.layout.SettingBar;
27-
import java.io.File;
28-
import java.net.URI;
29-
import java.net.URISyntaxException;
3019

3120
/**
3221
* author : Android 轮子哥
@@ -89,7 +78,7 @@ public void onClick(View view) {
8978
if (view == mAvatarLayout) {
9079
ImageSelectActivity.start(this, data -> {
9180
// 裁剪头像
92-
cropImageFile(new File(data.get(0)));
81+
cropImageFile(data.get(0));
9382
});
9483
} else if (view == mAvatarView) {
9584
if (mAvatarUrl != null) {
@@ -140,67 +129,11 @@ public void onClick(View view) {
140129
/**
141130
* 裁剪图片
142131
*/
143-
private void cropImageFile(File sourceFile) {
144-
ImageCropActivity.start(this, sourceFile, 1, 1, new ImageCropActivity.OnCropListener() {
145-
146-
@Override
147-
public void onImageCropSuccess(Uri fileUri, String fileName) {
148-
File outputFile;
149-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
150-
outputFile = new FileContentResolver(PersonalDataActivity.this, fileUri, fileName);
151-
} else {
152-
try {
153-
outputFile = new File(new URI(fileUri.toString()));
154-
} catch (URISyntaxException e) {
155-
e.printStackTrace();
156-
outputFile = new File(fileUri.toString());
157-
}
158-
}
159-
updateCropImage(outputFile, true);
160-
}
161-
162-
@Override
163-
public void onImageCropError(String details) {
164-
// 没有的话就不裁剪,直接上传原图片
165-
// 但是这种情况极其少见,可以忽略不计
166-
updateCropImage(sourceFile, false);
167-
}
168-
});
169-
}
170-
171-
/**
172-
* 上传裁剪后的图片
173-
*/
174-
private void updateCropImage(File file, boolean deleteFile) {
175-
if (true) {
176-
if (file instanceof FileContentResolver) {
177-
mAvatarUrl = ((FileContentResolver) file).getContentUri();
178-
} else {
179-
mAvatarUrl = Uri.fromFile(file);
180-
}
181-
GlideApp.with(this)
182-
.load(mAvatarUrl)
183-
.transform(new MultiTransformation<>(new CenterCrop(), new CircleCrop()))
184-
.into(mAvatarView);
185-
return;
186-
}
187-
188-
EasyHttp.post(this)
189-
.api(new UpdateImageApi()
190-
.setImage(file))
191-
.request(new HttpCallbackProxy<HttpData<String>>(this) {
192-
193-
@Override
194-
public void onHttpSuccess(@NonNull HttpData<String> data) {
195-
mAvatarUrl = Uri.parse(data.getData());
196-
GlideApp.with(PersonalDataActivity.this)
197-
.load(mAvatarUrl)
198-
.transform(new MultiTransformation<>(new CenterCrop(), new CircleCrop()))
199-
.into(mAvatarView);
200-
if (deleteFile) {
201-
file.delete();
202-
}
203-
}
204-
});
132+
private void cropImageFile(String imagePath) {
133+
mAvatarUrl = Uri.parse(imagePath);
134+
GlideApp.with(this)
135+
.load(imagePath)
136+
.transform(new MultiTransformation<>(new CenterCrop(), new CircleCrop()))
137+
.into(mAvatarView);
205138
}
206139
}

app/src/main/java/com/hjq/demo/ui/activity/common/CameraActivity.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import com.hjq.demo.permission.PermissionInterceptor;
1717
import com.hjq.permissions.XXPermissions;
1818
import com.hjq.permissions.permission.PermissionLists;
19-
import com.hjq.permissions.permission.base.IPermission;
2019
import java.io.File;
2120
import java.text.SimpleDateFormat;
2221
import java.util.Date;
@@ -42,8 +41,6 @@ public static void start(BaseActivity activity, OnCameraListener listener) {
4241
@Log
4342
public static void start(BaseActivity activity, boolean video, OnCameraListener listener) {
4443
XXPermissions.with(activity)
45-
.permission(PermissionLists.getWriteExternalStoragePermission())
46-
.permission(PermissionLists.getReadExternalStoragePermission())
4744
.permission(PermissionLists.getCameraPermission())
4845
.interceptor(new PermissionInterceptor())
4946
.description(new PermissionDescription())
@@ -110,10 +107,7 @@ protected void initData() {
110107
}
111108

112109
if (intent.resolveActivity(getPackageManager()) == null ||
113-
!XXPermissions.isGrantedPermissions(this, new IPermission[]{
114-
PermissionLists.getReadExternalStoragePermission(),
115-
PermissionLists.getWriteExternalStoragePermission(),
116-
PermissionLists.getCameraPermission()})) {
110+
!XXPermissions.isGrantedPermission(this, PermissionLists.getCameraPermission())) {
117111
setResult(RESULT_ERROR, new Intent().putExtra(INTENT_KEY_OUT_ERROR, getString(R.string.camera_launch_fail)));
118112
finish();
119113
return;

0 commit comments

Comments
 (0)