背景
Android 逐渐收拢了存储机制的权限,增加了分区存储功能并不断完善.
临时可过渡方案
- 以 Android 10(API 级别 29)为目标平台
- 在
AndroidManifest的application中添加android:requestLegacyExternalStorage="true"
常规方案
迁移旧版本文件位置到新位置
- 使用
preserveLegacyExternalStorage标记来保留旧版存储模型,以便在升级到以Android11 为目标时可以迁移用户数据.注意:只在卸载应用前有效,新安装的应用无法使用这个标记 - 继续使用过渡方案中的标记,在 Android10 的设备上访问旧版的存储模型
迁移步骤
- 检查应用的工作文件是否位于
/sdcard/目录或其任何子目录中。 - 将任何私有应用文件从
/sdcard/下的当前位置移至[getExternalFilesDir()](https://developer.android.com/reference/android/content/Context?hl=zh-cn#getExternalFilesDir(java.lang.String))方法所返回的目录。 - 将任何共享的非媒体文件从
/sdcard/下的当前位置移至Downloads/目录的应用专用子目录。 - 从
/sdcard/目录中移除应用的旧存储目录。
测试分区存储
如需在您的应用中启用分区存储,而不考虑应用的目标 SDK 版本和清单标记值,请启用以下应用兼容性标记:
[DEFAULT_SCOPED_STORAGE](https://developer.android.com/about/versions/11/test-changes?hl=zh-cn#default_scoped_storage)(默认情况下,对所有应用处于启用状态)[FORCE_ENABLE_SCOPED_STORAGE](https://developer.android.com/about/versions/11/test-changes?hl=zh-cn#force_enable_scoped_storage)(默认情况下,对所有应用处于停用状态)
如需停用分区存储而改用旧版存储模型,请取消设置这两个标记。
使用新的外部存储专用目录
调用 getExternalFilesDirs() 来获取可用目录
About Me
我的博客 csdn
我的 GitHub github.com/LeonChen102…
微信公众号 CooCoder