Android Q SD卡权限配置与隔离存储实战指南
111 浏览量
更新于2024-09-03
收藏 76KB PDF 举报
"本文主要探讨了在Android Q中如何处理SD卡权限的问题,提供了解决方案,包括临时停用分区存储行为以及实现隔离存储的方法。文章通过具体的代码示例进行了详细解释,对于开发者来说具有很高的参考价值。"
在Android Q中,系统对SD卡(外部存储)的访问权限进行了严格的限制,以提高用户数据的安全性。默认情况下,如果应用以Android Q为目标平台,它只能访问到应用自己的私有目录,而不能随意读写所有外部存储空间。以下是两种应对策略:
1. 临时停用分区存储行为:
如果你的应用需要兼容Android Q并需要访问完整的外部存储,可以在应用的清单文件(`AndroidManifest.xml`)中添加`requestLegacyExternalStorage`属性,并将其值设置为`true`。这样,你的应用将在Android Q上也能拥有类似Android 9及以下版本的存储权限。例如:
```xml
<manifest>
<!-- This attribute is "false" by default on apps targeting Android Q. -->
<application android:requestLegacyExternalStorage="true">
...
</application>
</manifest>
```
2. 如何实现隔离存储:
- 申请PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE标记:
在`PackageParser.java`中,当应用的目标SDK版本小于Android Q时,系统会为`ApplicationInfo`对象设置`PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE`标志。这表示应用请求保留旧版的外部存储访问权限。
```java
if (sa.getBoolean(
R.styleable.AndroidManifestApplication_requestLegacyExternalStorage,
owner.applicationInfo.targetSdkVersion < Build.VERSION_CODES.Q)) {
ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE;
}
```
- grantRuntimePermission()与重新挂载视图:
当应用启动时,系统会根据这个标志来决定是否挂载运行时的视图,使得应用能够访问到外部存储。`grantRuntimePermission()`方法在此过程中起到关键作用,它允许应用在运行时获取所需的权限,从而实现对外部存储的访问。
这些更改是Android Q为了适应新的隐私政策而做出的调整。开发人员需要根据应用的需求,决定是否需要申请旧版的外部存储访问权限,或者更新代码以遵循新的存储访问模式,例如使用`Context.getExternalFilesDir()`来存储应用专属的文件。
理解并适配Android Q的SD卡权限变化对于开发者至关重要,这将直接影响到应用在新系统上的功能和用户体验。通过上述方法,开发者可以确保应用在Android Q上能够正常运行并正确处理存储权限问题。
2021-01-21 上传
2021-01-03 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-08-27 上传
2020-08-27 上传
2020-08-31 上传
点击了解资源详情
weixin_38712899
- 粉丝: 4
- 资源: 941
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍