技术文档2019-11-06

适配指导 | Android 10分区存储

    111.jpg

    上一篇介绍了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 

    适配方案:变更后每个应用在外部存储区都有自己独立的存储沙箱,也为应用提供了多媒体分区和下载文件分区。应用可以通过下面的方式进入过滤视图访问文件:


    222.png

    * 存储访问框架可以访问以上三个位置,并且不用申请任何权限。

     

    具体实现方式,请参考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。 

    333.jpg

    参考目录:

    分区存储: 

    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

    感谢您的关注和参与!

    您还可关注“三星开发者”公众号查看相关开发者指引。

    666.png