XXPermissions icon indicating copy to clipboard operation
XXPermissions copied to clipboard

[Bug]:权限设置maxSdkVersion后一律抛出异常

Open gggcccwww opened this issue 10 months ago • 6 comments

框架版本【必填】

v18.63

问题描述【必填】

Uploading image.png… 此处传入值永远是Integer.MAX_VALUE,一旦设置android:maxSdkVersion 必定抛出异常

复现步骤【必填】

android 9手机上运行app,清单文件添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" /> 后申请WRITE_EXTERNAL_STORAGE 后直接报出please delete the android:maxSdkVersion异常 image 此处方法传入的是Integer.MAX_VALUE 永远报错!

是否必现【必填】

项目 targetSdkVersion【必填】

33

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

android 9即可

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

android 9即可

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

自己遇到的

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

必现

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

框架文档是否提及了该问题【必答】

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

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

是否已经搜索过了 issue 列表但还未能解决的【必答】

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

提供报错堆栈

java.lang.IllegalArgumentException: The AndroidManifest.xml file <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" /> does not meet the requirements, please delete the android:maxSdkVersion="28" attribute
        at com.hjq.permissions.PermissionChecker.checkManifestPermission(PermissionChecker.java:665)
        at com.hjq.permissions.PermissionChecker.checkManifestPermission(PermissionChecker.java:627)
        at com.hjq.permissions.PermissionChecker.checkManifestPermissions(PermissionChecker.java:542)
        at com.hjq.permissions.XXPermissions.request(XXPermissions.java:200)
        at

提供截图或视频

No response

提供解决方案

No response

gggcccwww avatar Apr 12 '24 06:04 gggcccwww

小伙子,你为什么要给权限加 maxSdkVersion 属性?

getActivity avatar Apr 13 '24 01:04 getActivity

存储一张图片到相册28 以前需要WRITE_EXTERNAL_STORAGE权限才可以,28以后压根就不需文件权限 所以自然的 这个权限WRITE_EXTERNAL_STORAGE 我得加个maxSdkVersion 属性哇。。。。大佬哇,这个参数就是设置不同权限的上限版本的哇

gggcccwww avatar Apr 16 '24 04:04 gggcccwww

@gggcccwww 不加会有什么问题?

getActivity avatar Apr 16 '24 05:04 getActivity

仅供参考的 AI 回复

image

lisonge avatar Apr 25 '24 14:04 lisonge

存储一张图片到相册28 以前需要WRITE_EXTERNAL_STORAGE权限才可以,28以后压根就不需文件权限 所以自然的 这个权限WRITE_EXTERNAL_STORAGE 我得加个maxSdkVersion 属性哇。。。。大佬哇,这个参数就是设置不同权限的上限版本的哇

小伙子,我认真思考了一下,你讲得确实有道理,但是 API 28 还不一定不需要权限,得看你怎么读写外部存储上面的文件,如果你是通过 ContentValues 的方式,确实不需要权限,但是如果是通过 File 的方式,则仍然需要写入文件权限,框架其实无法得知外层用的是哪种。

getActivity avatar Apr 26 '24 15:04 getActivity

如果要解决你这个问题,其实有两个办法,你可以参考一下

  1. 在清单文件中静态注册权限的时候,不要带上 maxSdkVersion 属性,这样就不会触发框架的检测异常

  2. 在权限申请的时候,调用 .unchecked() 方法,表示不会进行任何权限检查,这样就不会触发框架的检测异常

getActivity avatar Apr 26 '24 15:04 getActivity