美文网首页实用Android Other
Android 11+ 文件读写权限之沙盒机制详解

Android 11+ 文件读写权限之沙盒机制详解

作者: Kael_Zhang的安卓笔记 | 来源:发表于2022-08-25 07:05 被阅读0次

引言

Android 11 (api 30)强制引入&执行应用沙盒机制,获取文件读写权限并不能直接读写相册等公共目录,适配该版本时此问题的适配是无法避免的,这是android的一项新的安全机制,保证用户不受恶意应用的侵害,隔离应用间的数据&私有目录&公共目录,应用间不能直接互相访问数据,不过这也带来了一些适配问题,比如拍照应用如何保存图片到公共相册等问题,本文旨在介绍此问题

如何读写文件

  • targetSdk < 29 (目标版本 < Android 10

获取以下权限即可访问公共目录

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • targetSdk = 29 (目标版本 = Android 10

获取以下权限不能访问公共目录

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

同时添加以下参数可以访问公共目录

android:requestLegacyExternalStorage="true"
  • targetSdk >= 29 (目标版本 >= Android 10

获取以下权限不可以读写公共目录

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

同时使用SAF(存储访问框架)、多媒体框架读写公共目录

  • targetSdk >= 29 (目标版本 >= Android 10

获取以下权限可以公共目录(不建议)

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

注意事项

app编译时targetSdk是关键参数,targetSdk = 29 的app,即便安装到Android 11的机器上,也是按照api 29的权限规则运行的,不过此沙盒机制,还是需要尽快适配的,各大应用商店的上架标准很快就会要求 targetSdk >= 31,以强制要求适配新版本android,保证用户体验

相关文章

网友评论

    本文标题:Android 11+ 文件读写权限之沙盒机制详解

    本文链接:https://www.haomeiwen.com/subject/dizwgrtx.html