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 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 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; } }