Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[疑惑]:Android 12媒体读取权限 #308

Closed
429322426 opened this issue Jul 17, 2024 · 5 comments
Closed

[疑惑]:Android 12媒体读取权限 #308

429322426 opened this issue Jul 17, 2024 · 5 comments
Labels
question Further information is requested

Comments

@429322426
Copy link

问题描述【必填】

轮子哥你好:
我在使用XXPermissions权限框架的时候按系统版本请求了不同的权限 ,现在我的设备是 android 12 ,请求的权限是 READ_EXTERNAL_STORAGE 但是框架里面提示 When targetSdkVersion >= 33 should use android.permission.READ_MEDIA_IMAGES, android.permission.READ_MEDIA_VIDEO, android.permission.READ_MEDIA_AUDIO, rather than android.permission.READ_EXTERNAL_STORAGE

这里框架是通过判断 targetSdkVersion 来判断请求那些权限吗?而不是设备搭载的android 系统版本吗?
下面是我判断版本请求权限的方法
val permissions:List = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
listOf(READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_VISUAL_USER_SELECTED)
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
listOf(READ_MEDIA_IMAGES, READ_MEDIA_VIDEO)
} else {
listOf(READ_EXTERNAL_STORAGE)
}
我看谷歌官网的权限请求在 33以下也是只需要请求 READ_EXTERNAL_STORAGE权限就够了,麻烦轮子哥帮忙解答下

4556

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

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

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

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

@429322426 429322426 added the question Further information is requested label Jul 17, 2024
@getActivity
Copy link
Owner

image

@getActivity
Copy link
Owner

小伙子,你确定这个问题文档上面没写?

@429322426
Copy link
Author

如果当前项目在没有适配分区存储的情况下,申请 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限

当项目的 targetSdkVersion >= 29 时,需要在清单文件中注册 android:requestLegacyExternalStorage="true" 属性,否则框架会抛出异常,如果不加会导致一个问题,明明已经获取到存储权限,但是无法在 Android 10 的设备上面正常读写外部存储上的文件。

当项目的 targetSdkVersion >= 30 时,则不能申请 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限,而是应该申请 MANAGE_EXTERNAL_STORAGE 权限

如果当前项目已经适配了分区存储,那么只需要在清单文件中注册一个 meta-data 属性即可:

是这部分的描述吗? 我的应用需要上架谷歌商店 ,所以没有必要是不能去申请 MANAGE_EXTERNAL_STORAGE 权限的。

@getActivity
Copy link
Owner

@429322426 不要随随便便拿点东西就贴到 issue,你先回去把框架的首页文档和疑问文档,仔仔细细,一字不落完整看一遍。

@429322426
Copy link
Author

轮子哥谢谢了 ,我根据这一段描述去做的修改 ,现在可以正常执行了。

所以大家在使用 XXPermissions 的时候,直接拿新的权限去申请就可以了,完全不需要关心新旧权限的兼容问题,框架会自动帮你做处理的,与其他框架不同的是,我更想做的是让大家一句代码搞定权限请求,框架能做到的,统统交给框架做处理。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants