package com.android.app_base.manager;
|
|
import android.Manifest;
|
import android.os.Build;
|
|
import androidx.fragment.app.Fragment;
|
|
import com.blankj.utilcode.util.PermissionUtils;
|
import com.luck.picture.lib.interfaces.OnRequestPermissionListener;
|
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
|
/**
|
* @author Ljj
|
* @date 2023.04.02. 18:45
|
* @desc 解决Android 13 以上版本使用PictureSelector 选择图片时报错的问题
|
* 'io.github.lucksiege:pictureselector:v3.10.9'则不需要
|
* //TODO 待删
|
*/
|
public class OnPermissionsInterceptListenerImpl implements com.luck.picture.lib.interfaces.OnPermissionsInterceptListener {
|
@Override
|
public void requestPermission(Fragment fragment, String[] permissionArray, OnRequestPermissionListener call) {
|
if (permissionArray == null || fragment == null || fragment.getContext() == null) return;
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
//把权限数组转换成List
|
List<String> result = new ArrayList<>(Arrays.asList(permissionArray));
|
result.remove(Manifest.permission.READ_EXTERNAL_STORAGE);
|
//把result转换成数组
|
permissionArray = result.toArray(new String[result.size()]);
|
call.onCall(permissionArray, true);
|
} else {
|
call.onCall(permissionArray, true);
|
}
|
}
|
|
@Override
|
public boolean hasPermissions(Fragment fragment, String[] permissionArray) {
|
if (permissionArray == null || fragment == null) return false;
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
List<String> result = Arrays.asList(permissionArray);
|
if (result.contains(Manifest.permission.READ_EXTERNAL_STORAGE)) {
|
result.remove(Manifest.permission.READ_EXTERNAL_STORAGE);
|
}
|
} else {
|
return PermissionUtils.isGranted(permissionArray);
|
}
|
return false;
|
}
|
}
|