美文网首页
Android -- 沙箱适配规则总结

Android -- 沙箱适配规则总结

作者: 皓皓amous | 来源:发表于2023-06-26 10:20 被阅读0次

目录

  1. 沙箱存储原理
  2. 存储目录概况
  3. 权限变化
  4. 分区存储对API的影响
  5. 应用旧数据迁移
  6. 访问其他应用的数据
  1. 沙箱存储原理
    深入理解Android沙箱存储机制

  2. 存储目录概况
    私有存储: 每个应用在都拥有自己的私有目录:
    内部存储 (/data/data/packageName)
    外部存储 (/sdcard/Android/data/packageName)
    共享存储: 存储其他应用可访问文件, 包含媒体文件、文档文件以及其他文件,对应设备DCIM、Pictures、Alarms、Music、Notifications、Podcasts、Ringtones、Movies、Download等目录。

  3. 权限变化

Enviroment.getExternalStorageDirectory:返回的路径是sdcrad/
Storage Access Framework (SAF):SAF是一个文件(图片、文档等)提供程序。用户可通过易用的标准UI,跨所有应用和提供程序以统一的方式浏览文件并访问最近用过的文件。
MediaStore API:MediaStore API提供一套统一的URI和参数,建立起应用和媒体提供程序的沟通桥梁。与SAF相比,SAF更偏向用户侧,MediaStore API更便向开发侧。用户通过SAF取得文件的Uri后,需要通过MediaStore API访问数据源。

4.分区存储对API的影响
部分API仍可正常使用,如File的exists()、isDirectory()等。

使用下述API访问分区外内容时,会引发失败或异常。

类 受影响接口
File createNewFile()、delete()、renameTo(File dest)、mkdir()、mkdirs()
FileInputStream FileInputStream(File file)、FileInputStream(String name)
FileOutputStream FileOutputStream(File file)、FileOutputStream(File file, boolean append)、FileOutputStream(String name)、FileOutputStream(String name, boolean append)
BitmapFactory decodeFile(String pathName)、decodeFile(String pathName, Options options)

5.应用旧数据迁移
5.1 分区存储相关属性
“requestLegacyExternalStorage“ 请求使用旧版的分区存储,仅在SDK=29时有效。
“preserveLegacyExternalStorage”继续保持旧版的分区存储,仅在SDK>=30时有效。
5.2 确保旧数据完全迁移
targetSdkVersion=29。

情况 由29以下升至29 直接安装29
能使用旧版存储模型 i. 不能使用旧版存储模型 ii. 为application设置“requestLegacyExternalStorage=true“标签,允许暂时允许使用旧版存储模式。
targetSdkVersion=30,强制实行分区存储。

情况 由29以下升至29再升至30 / 由29以下直接升至30 由29升至30 直接安装30
需设置”preserveLegacyExternalStorage=true”才能使用旧版存储模型 需设置”preserveLegacyExternalStorage=true”,且应用的29版本具有“requestLegacyExternalStorage=true“属性,才能继续使用旧版存储模型 不能使用旧版存储模型
总结:targetSdkVersion升至30前,必须完成代码的适配;targetSdkVersion升至30时,需要设置”preserveLegacyExternalStorage=true”。

6.访问其他应用的数据
SDK=29。不管其他应用是否开启分区存储,只要本应用不开启分区存储,仍可以访问第三方应用的外部存储。

SDK>=30。无论应用的targetSdkVersion是什么,都无法再访问第三方应用的外部存储 (/sdcard/Android/data/packageName),主要影响到分享图片功能。

情况 第三方应用支持FileProvider 第三方应用不支持FileProvider
通过Uri进行分享 无法分享,只能对方提供适配的SDK。
————————————————
版权声明:本文为CSDN博主「op小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36518248/article/details/114672115

相关文章

  • 2019年的面试条目总结

    2019年的面试条目总结 一.熟练对Android Q版本适配 存储沙箱化, 每个应用访问自己沙箱内的文件。访问别...

  • 安卓适配

    ------刘海屏------屏幕适配 | Android 刘海屏适配总结Android刘海屏适配方案Androi...

  • Android版本介绍 - 收藏集 - 掘金

    关于 Android 7.0 适配中 FileProvider 部分的总结 - 掘金由于 Android 7.0 ...

  • Android6.0至9.0版本适配总结

    Android6.0至9.0版本适配总结 简要列举下Android6到Android9在开发中需要适配的问题,做到...

  • Android 适配总结

    ## Android 适配总结 ### values-swxxdp用来做适配,表示最小宽度 最小宽度计算方法 ``...

  • Android 屏幕适配-刘海屏适配

    承接Android 屏幕适配 说明:本文仅为简单总结google官方的刘海平适配方案如需具体机型适配,请自行移步g...

  • Android 7.0 以上安装Apk适配方案总结

    Android 7.0 以上安装Apk适配方案总结 解决:FileUriExposedException异常: 最...

  • 面试题专栏集合

    android面试 一份用心整理的Android面试总结 Android 目前最稳定和高效的UI适配方案 2018...

  • 2018 android 文章汇总

    Android面试:一份用心整理的Android面试总结 Android 目前最稳定和高效的UI适配方案 2018...

  • Android 适配总结

    Android设备多,品牌多,尺寸多,系统版本分布大,碎片化严重。Android的适配包括系统的适配和屏幕的适配等...

网友评论

      本文标题:Android -- 沙箱适配规则总结

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