适配指导 | Android 10分区存储
上一篇介绍了Device ID 限制,本文将介绍Android 10上另一个关于隐私保护的重大变更:分区存储。它改变了应用对外部存储设备中的文件访问方式,不仅增强了用户的隐私保护,给予了用户更多的决定权,同时避免了垃圾文件的产生,提高了设备存储空间的利用率。虽然目前谷歌提供了兼容方案,使应用避免了分区存储的问题,但是谷歌表明明年的版本会强制执行分区存储,所以建议应用提前完成适配、数据迁移等工作。
变更:默认情况下,对于targetSdkVersion大于等于29的应用,其访问权限范围限定为分区存储。此应用无需请求与存储相关的用户权限,即可以查看外部存储中以下类型的文件:
• 应用外部特定目录中的文件(使用 getExternalFilesDir() 访问)。
• 应用自己创建的照片、视频和音频(通过MediaStore访问)。
影响:分区存储将影响在Android 10系统首次安装启动、且targetSdkVersion >=29的应用。需要访问和共享外部存储文件的应用会受到影响,需要进行兼容性适配。
影响范围:在Android 10上运行的应用:
- targetSdkVersion <= 28,不受影响
- 如果targetSdkVersion >= 29,默认情况应用外部存储可见性将被过滤,应用需要对分区存储进行适配。
以下两种情况比较特殊,不会受到分区存储的影响:
如果应用最先安装在Android 10以下的系统,
1) 然后系统通过Fota升级到Android 10 或
2) 应用通过更新升级到targetSdkVersion >= 29
适配方案:变更后每个应用在外部存储区都有自己独立的存储沙箱,也为应用提供了多媒体分区和下载文件分区。应用可以通过下面的方式进入过滤视图访问文件:
* 存储访问框架可以访问以上三个位置,并且不用申请任何权限。
具体实现方式,请参考Android官网:
MediaStore:
https://developer.android.google.cn/reference/android/provider/MediaStore
存储访问框架:
https://developer.android.google.cn/guide/topics/providers/document-provider
Android 10临时兼容方案:
如果应用没有兼容分区存储,应用可以暂时用以下两种方法进入兼容模式,避免分区存储的影响:
- targetSdkVersion <= 28,不受影响
- 如果targetSdkVersion > = 29,在应用manifest文件中设置requestLegacyExternalStorage为true。
参考目录:
分区存储:
https://developer.android.google.cn/about/versions/10/privacy/changes#scoped-storage
https://developer.android.google.cn/training/data-storage/files/external-scoped
联系我们:
如果您对Android 10适配有任何问题,可以发邮件到下面的邮箱与我们联系。
欢迎发邮件到:rdtpservice@samsung.com
邮件主题:三星Android 10适配
=====================
现三星测试平台已开放真机调试,如暂时短缺相关型号手机的开发者可以通过此平台进行真机调试。
点击下方地址进行访问:
http://support-cn.samsung.com/App/DeveloperChina/Static/rdtp
感谢您的关注和参与!
您还可关注“三星开发者”公众号查看相关开发者指引。