美文网首页
Android 11+ 文件读写权限之沙盒机制详解(此文章为复制

Android 11+ 文件读写权限之沙盒机制详解(此文章为复制

作者: 皓皓amous | 来源:发表于2023-02-16 10:58 被阅读0次
https://zhuanlan.zhihu.com/p/275758740
https://www.jianshu.com/p/3f57e7464184
# Android 11+ 文件读写权限之沙盒机制详解

[![image](https://upload.jianshu.io/users/upload_avatars/15058356/54ee15ba-3e67-4084-90bc-925d53d62711.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/96/h/96/format/webp)](https://www.jianshu.com/u/874debdf1c26) 

[Kael_Zhang的安卓笔记](https://www.jianshu.com/u/874debdf1c26)关注 IP属地: 广东

0.284<time datetime="2022-08-25T23:05:08.000Z" style="box-sizing: border-box; margin-right: 10px;">2022.08.26 07:05:08</time>字数 415阅读 1,188

<article class="_2rhmJa" style="box-sizing: border-box; display: block; font-weight: 400; line-height: 1.8; margin-bottom: 20px; word-break: break-word; position: relative; color: rgb(64, 64, 64); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">

# 引言

`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,保证用户体验

</article>

相关文章

网友评论

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

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