XXPermissions
XXPermissions copied to clipboard
[Bug]:权限设置maxSdkVersion后一律抛出异常
框架版本【必填】
v18.63
问题描述【必填】
此处传入值永远是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异常
此处方法传入的是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
小伙子,你为什么要给权限加 maxSdkVersion
属性?
存储一张图片到相册28 以前需要WRITE_EXTERNAL_STORAGE权限才可以,28以后压根就不需文件权限 所以自然的 这个权限WRITE_EXTERNAL_STORAGE 我得加个maxSdkVersion 属性哇。。。。大佬哇,这个参数就是设置不同权限的上限版本的哇
@gggcccwww 不加会有什么问题?
仅供参考的 AI 回复
存储一张图片到相册28 以前需要WRITE_EXTERNAL_STORAGE权限才可以,28以后压根就不需文件权限 所以自然的 这个权限WRITE_EXTERNAL_STORAGE 我得加个maxSdkVersion 属性哇。。。。大佬哇,这个参数就是设置不同权限的上限版本的哇
小伙子,我认真思考了一下,你讲得确实有道理,但是 API 28 还不一定不需要权限,得看你怎么读写外部存储上面的文件,如果你是通过 ContentValues 的方式,确实不需要权限,但是如果是通过 File 的方式,则仍然需要写入文件权限,框架其实无法得知外层用的是哪种。
如果要解决你这个问题,其实有两个办法,你可以参考一下
-
在清单文件中静态注册权限的时候,不要带上
maxSdkVersion
属性,这样就不会触发框架的检测异常 -
在权限申请的时候,调用
.unchecked()
方法,表示不会进行任何权限检查,这样就不会触发框架的检测异常