Closed yulu1121 closed 1 year ago
小伙子,问题修复了,你用这个包再试一下看看有没有问题。
您好,轮子哥,我用您最新的包测试了,安卓13的手机是没有问题的,13以下的手机会存在进入请求权限,允许也会回调拒绝的方法。测试手机:安卓11、minSdkVersion 21、targetSdkVersion 33
/**
请求权限 */ private void requestPermission() { List<String> permissionList = new ArrayList<>(); permissionList.add(Permission.READ_MEDIA_IMAGES); permissionList.add(Permission.CAMERA); XXPermissions.with(this) .permission(permissionList) .request(new OnPermissionCallback() { @Override public void @.*** List<String> permissions, boolean all) {
}
@Override
public void ***@***.*** List<String> permissions, boolean never) {
if (never) {
//允许也会回调这个方法
// 如果是被永久拒绝就跳转到应用权限系统设置页面
createPermissionAlertDialog(permissions);
} else {
ToastUtils.showShortToast(mContext,getString(R.string.have_permission_fail));
}
}
});
}
而XXPermissions.isGranted这个方法返回的是true, List
permissionList.add(Permission.READ_MEDIA_IMAGES); permissionList.add(Permission.CAMERA); if (XXPermissions.isGranted(mContext, permissionList)) { configPicSelector(UserFormationActivity.this); } else { requestPermission(); }
小伙子,你用什么手机(品牌机型,Android 版本)做的测试?
Android 11用的是不知名UROVO品牌的PDA手机, 荣耀Play4T Android 10也会出现这个问题,就是申请READ_MEDIA_IMAGES权限,同意会走拒绝的方法
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年2月28日(星期二) 上午9:33 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [getActivity/XXPermissions] 安卓13 READ_MEDIA_IMAGES 权限问题 (Issue #187)
小伙子,你用什么手机(品牌机型,Android 版本)做的测试?
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
@yulu1121 小伙子,你用 Android Studio 自带的模拟器看看有没有同样的问题?
轮子哥,我查了下,原因是 Andorid 13 以下是没有 READ_MEDIA_IMAGES
这个权限,所以会走失败的方法,而您在PermissionChecker 类的 checkStoragePermission 方法里对 READ_EXTERNAL_STORAGE
和 WRITE_EXTERNAL_STORAGE
进行了强关联,不能单独申请 READ_EXTERNAL_STORAGE
,申请会异常,解决办法:
针对 TargetSDK 为 33 的情况,将强关联的代码注释,由用户自己判断 SDK 版本 ,而 TargetSDK 33 以下的,不用注释可以直接这样写
if (Build.VERSION.SDK_INT >= 33){
permissionList.add(Permission.READ_MEDIA_IMAGES);
} else {
permissionList.add(Permission.READ_EXTERNAL_STORAGE);
}
当然这是针对我要上架谷歌应用市场的处理,而国内平台对写入SD卡的权限并未强制要求,您可以不处理,我把代码下到本地,自己处理好了。您可以关闭这个问题了,谢谢! 注释代码:
if (AndroidVersion.getTargetSdkVersionCode(context) >= AndroidVersion.ANDROID_13 &&
(PermissionUtils.containsPermission(requestPermissions, Permission.READ_EXTERNAL_STORAGE) ||
PermissionUtils.containsPermission(requestPermissions, Permission.WRITE_EXTERNAL_STORAGE))) {
// 当 targetSdkVersion >= 33 应该使用 READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO 来代替 READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE
// 因为经过测试,如果当 targetSdkVersion >= 33 申请 READ_EXTERNAL_STORAGE 或者 WRITE_EXTERNAL_STORAGE 会被系统直接拒绝,不会弹出任何授权框
throw new IllegalArgumentException("When targetSdkVersion >= 33 should use " +
Permission.READ_MEDIA_IMAGES + ", " + Permission.READ_MEDIA_VIDEO + ", " + Permission.READ_MEDIA_AUDIO +
" instead of " + Permission.READ_EXTERNAL_STORAGE + ", " + Permission.WRITE_EXTERNAL_STORAGE);
}
小伙子,我自己用 Android 10、Android 11、Android 12 模拟器测试,都是没有问题的,你再帮我试试看这个 apk 有没有问题,下载 demo 后点击第一个按钮会申请 READ_MEDIA_IMAGES 和 CAMERA 权限,我这边经过测试是没有问题的。
可以是可以,但是您应该Manifest添加了WRITE_EXTERNAL_STORAGE权限,我测试了下,清单文件里加WRITE_EXTERNAL_STORAGE就可以,去掉就不行,我是不需要这个写入权限的
小伙子,在清单文件中添加 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />
确实会导致回调失败,我排查了一下,原因是我在 PermissionChecker.optimizeDeprecatedPermission 方法中加了一段代码逻辑,如果是 Android 13 版本以下申请 READ_MEDIA_IMAGES
、READ_MEDIA_VIDEO
、READ_MEDIA_AUDIO
会自动添加 READ_EXTERNAL_STORAGE
和 WRITE_EXTERNAL_STORAGE
权限,我现在已经把自动添加 WRITE_EXTERNAL_STORAGE
权限的逻辑去掉了,测试了没有问题了,你可以下载上面的包再试一下。
可以了,谢谢!
------------------ 原始邮件 ------------------ 发件人: "getActivity/XXPermissions" @.>; 发送时间: 2023年2月28日(星期二) 下午4:56 @.>; @.**@.>; 主题: Re: [getActivity/XXPermissions] 安卓13 READ_MEDIA_IMAGES 权限问题 (Issue #187)
XXPermissions-16.8.aar.zip
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
小伙子,远程依赖更新了,你更新到 16.8 版本后再试一下。
问题描述: 您好,我在上架google应用市场时,说我申请了写入所有档案的权限(即android.permission.WRITE_EXTERNAL_STORAGE),但是我在Manifest里面并没有添加该权限,而且也加了 uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"来移除第三方申请的写入权限,我的SDK是33,申请的是uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE", uses-permission android:name="android.permission.READ_MEDIA_IMAGES" 这两个权限,为了读取相册,但是我看你的注释,READ_MEDIA_IMAGES这个权限必须要有WRITE_EXTERNAL_STORAGE这个权限,但是不需要这个权限也可以读取相册,能不能解除绑定呢?
issue 是否有人曾提过类似的问题? 没有
框架文档是否有提及到此问题? 否