安卓11改变了此前安卓系统对于文件管理的规则,在安卓11上,文件读写变成了特殊权限。应用默认只能读写自己的目录
Android11系统对应用写入权限做了严格的限制。本文介绍如何获取文件读写权限。
项目中 build.gradle 的targetSdkVersion >= 29 ,会出现读写问题
- 当targetSdkVersion = 29,通过设置requestLegacyExternalStorage=“true”,还能解决
- 当targetSdkVersion = 30后,需要申请所有文件权限才能获取到写入权限
为了能直接usb安装,gradle.properties 需要设置(否则,在安装时会报异常:-15)
申请权限,主要用到如下4个函数
- 检查权限
- 申请权限
- 是否应该显示请求权限的说明
- 处理权限结果回调
上述四个方法中,前三个方法在support-v4的ActivityCompat中都有,建议使用兼容库中的方法。最后一个方法是用户授权或者拒绝某个权限组时系统会回调Activity或者Fragment中的方法。
的返回值有如下两种
- 已拒绝
- 已授权
安卓默认只能跳转到 "应用信息"页面,但是国内手机厂商大多支持各自自定义的Intent,直接跳到应用程序权限页面

跳转到应用信息页面,页面包含如下内容
- 存储
- 电量
- 流量
- 通知
- 权限
- 默认打开
需要手动点击“权限”按钮,进入“应用权限”页面,然后开始设置相应的数据


谷歌官方的安卓11在“应用权限”页面隐藏了对“存储”权限的设置(当然,很多国产机,即使到了安卓12,依旧支持原先的存储权限;但也存在部分不支持的,比如:OPPO Reno9 Pro+)
取而代之的是“所有文件访问权限”页面,该页面用来授予“所有文件的管理权限”,允许此应用读取、修改和删除此设备或任意已连接存储卷上的所有文件。如果您授予该权限,应用无需明确通知您即可访问文件
这里面涉及到两个Settings
- 当前应用的文件访问权限:ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
- 所有需要文件访问权限的应用:ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
切记,不要在安卓11以下调用该Intent,会导致闪退

安卓11及以后,有如下几个函数判断是否赋予存储权限
- 老版读权限
- 老版写权限
- 安卓11新出的管理外置存储权限
- 安卓11新出的判断是否是外置存储管理器
- 初始化状态
- 仅在“应用权限”页面,打开存储权限中的“允许管理所有文件”
- 仅在“应用权限”页面,打开存储权限中的“仅允许访问媒体文件”
- 仅在“所有文件访问权限”页面,授予权限
因此,可以得出如下结论
- 不要尝试判断 权限,因为其永远为false
- 、、API,只能在安卓11及以上版本调用(低版本调用会闪退)
- “应用权限”页面,打开存储权限中的“允许管理所有文件”会使得变为true;但反之在“所有文件访问权限”页面授予权限,并不会改变的允许情况
因此,为了兼容 安卓4.4-安卓12,在11以下,建议使用方法进行存储权限判断;而安卓11及以上使用即可
到此这篇文件权限在哪里设置手机vivo(vivo文件管理访问限制在哪里设置)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jszy-cpgl/24089.html