getActivity / XXPermissions

Android 权限请求框架,已适配 Android 14
Apache License 2.0
5.71k stars 775 forks source link

[Bug]:荣耀v30手机,鸿蒙系统3.0的系统申请所有文件访问权限的问题 #206

Closed ChloeDimen closed 1 year ago

ChloeDimen commented 1 year ago

框架版本【必填】

18.0

问题描述【必填】

在荣耀v30手机,鸿蒙系统3.0的系统,在APP开启就直接申请 Permission.MANAGE_EXTERNAL_STORAGE权限,会直接跳转到“”所有文件访问"的设置界面。

复现步骤【必填】

  1. 在第一个启动的 Activity 的 onCreate 方法直接就申请 MANAGE_EXTERNAL_STORAGE 权限,代码如下
XXPermissions.with(this)
                    .permission(Permission.CAMERA)
                    .permission(Permission.MANAGE_EXTERNAL_STORAGE)

                    .request(new OnPermissionCallback() {
                        @Override
                        public void onGranted(@NonNull List<String> permissions, boolean allGranted) {
                            if (!allGranted) {
                                ToastUtils.showToast(SplashActivity.this, "获取部分权限成功,但部分权限未正常授予");
                                return;
                            } else {

                            }
                        }

                        @Override
                        public void onDenied(@NonNull List<String> permissions, boolean doNotAskAgain) {
                            if (doNotAskAgain) {
                                ToastUtils.showToast(SplashActivity.this, "被永久拒绝授权,请手动读写权限或摄像头权限");
                                // 如果是被永久拒绝就跳转到应用权限系统设置页面
                                 XXPermissions.startPermissionActivity(SplashActivity.this, permissions);
                            } else {
                                ToastUtils.showToast(SplashActivity.this, "获取读写权限或摄像头权限失败");
                            }
                        }
                    });
  1. 运行APP,直接就会跳转到“”所有文件访问"的设置界面。

是否必现【必填】

项目 targetSdkVersion【必填】

32

出现问题的手机信息【必填】

荣耀v30

出现问题的安卓版本【必填】

鸿蒙3.0

问题信息的来源渠道【必填】

自己遇到的

是部分机型还是所有机型都会出现【必答】

vivox 30不会出现

框架最新的版本是否存在这个问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

issue 是否有人曾提过类似的问题【必答】

是否可以通过 Demo 来复现该问题【必答】

使用原生的权限 API 是否会出现该问题【必答】

提供报错堆栈

No response

提供截图或视频

No response

提供解决方案

No response

ChloeDimen commented 1 year ago

发现在原生onRequestPermissionsResult获取的grantResults[0]返回-1

getActivity commented 1 year ago

小伙子,我没能理解你说的问题点是在哪里?

  1. 你究竟是想说一启动 App 跳转到《所有文件访问权限》页面还是说 onRequestPermissionsResult 获取的grantResults[0] 返回 -1?
  2. 你说既然说一启动 App 跳转到《所有文件访问权限》是有问题的,那么你为什么还说在第一个 Activity onCreate 方法中加入申请 MANAGE_EXTERNAL_STORAGE 权限来复现,你这难道不是自相矛盾?
ChloeDimen commented 1 year ago

我的意思是用框架在onCreate直接申请权限MANAGE_EXTERNAL_STORAGE 会跳转《所有文件访问权限》页面; 用原生的api在onCreate申请MANAGE_EXTERNAL_STORAGE 不会跳转《所有文件访问权限》页面,也没有权限弹窗。查看grantResults[0] 的返回 是-1。

getActivity commented 1 year ago

小伙子,我大概理解了,你这个问题不是使用框架遇到的问题,而自己用权限申请 API 遇到的问题,然后想找我帮忙解决对吧?

ChloeDimen commented 1 year ago

不是这个意思。我是先使用框架发现荣耀v30,鸿蒙3.0存在申请MANAGE_EXTERNAL_STORAGE 没有权限弹窗,直接跳转《所有文件访问权限》页面这个问题。 之后就提出了疑问的issue.你那边说要提交bug issue。我看到你有回答其他问题,提到用原生的api先测试看看。 我就自己用原生的api测试发现也不会弹出权限申请框,查看grantResults[0] 的返回 是-1。所以我觉得这是鸿蒙系统的问题。 但是用框架申请MANAGE_EXTERNAL_STORAGE 没有权限弹窗,直接跳转《所有文件访问权限》页面,这个显得有点突兀啦。

ChloeDimen commented 1 year ago

我刚用小米cc9 pro (MIUI 13.0.4)和LG Lm-G900(Android 12)测试grantResults[0] 也返回 是-1!!!

getActivity commented 1 year ago

MANAGE_EXTERNAL_STORAGE 不是危险权限,而是特殊权限, 你说 grantResults 的时候,我觉得你应该用 requestPermissions 来申请 MANAGE_EXTERNAL_STORAGE 权限,这样肯定是不行的,requestPermissions API 只适用于申请危险权限。

getActivity commented 1 year ago

至于你说的直接跳转《所有文件访问权限》页面这样太突兀,那你有没有看一下 Demo 申请这个权限是什么效果?

kevinIn commented 1 year ago

小伙子,我没能理解你说的问题点是在哪里?

  1. 你究竟是想说一启动 App 跳转到《所有文件访问权限》页面还是说 onRequestPermissionsResult 获取的grantResults[0] 返回 -1?
  2. 你说既然说一启动 App 跳转到《所有文件访问权限》是有问题的,那么你为什么还说在第一个 Activity onCreate 方法中加入申请 MANAGE_EXTERNAL_STORAGE 权限来复现,你这难道不是自相矛盾?

我遇到了应该是和楼主类似的问题,过程是我要获取相册权限,我通过permission(Permission.MANAGE_EXTERNAL_STORAGE),来获取文件读取权限,但是获取之后再次点击选择照片,应用就直接跳转到应用信息的界面了,也就是楼主说的获取权限信息界面,后面的每次点击都会自动跳过去,哪怕是手动了给了全部权限,也是一样,点击就是跳转到应用信息界面。后来我又尝试了READ_MEDIA_IMAGES权限,表现出来的效果一样,测试的手机是安卓13(iQOO Neo7),我录制了完整的视频,有地方可以发送的话我可以提供视频。

getActivity commented 1 year ago

超过两个星期没有响应,自动关闭此 issue。