Android 10/11 存储适配

参考文章:Android 存储基础
Android 10、11 存储完全适配(上)
Android 10、11 存储完全适配(下)

小记:

image.png

适配核心

分区存储是核心,App自身产生的文件应该存放在自己的目录下。这两个目录本App无需申请访问权限即可访问,其它App无法访问本App的目录。
  • /sdcard/Android/data/packagename/ App自身的自带外部存储-私有目录
  • /data/data/packagename/ App自身的内部存储
适配共享存储

共享存储空间里的文件需要通过Uri构造输入输出流访问。Uri获取方式有两种:MediaStoreSAF

适配其它目录

Android 11上需要申请访问所有文件的权限。

具体做法

第一步
  • AndroidManifest.xml里添加如下字段:权限声明:
   
   
  • 标签下添加如下字段:
android:requestLegacyExternalStorage="true"
第二步

如果需要访问共享存储空间,则判断运行设备版本是否大于等于 ·Android6.0·。

  • 若是则需要申请WRITE_EXTERNAL_STORAGE 权限。拿到权限后,通过Uri访问共享存储空间里的文件。
  • 如果需要访问其它目录,则通过SAF访问
第三步

如果想要做文件管理器、病毒扫描管理器等功能。则判断运行设备版本是否大于等于 Android 6.0,若是则需要先申请普通的动态存储权限。若运行设备版本为Android 10.0,则可以直接通过路径访问/sdcard/目录下文件(因为禁用了分区存储);若运行设备版本为Android 11.0,则需要申请MANAGE_EXTERNAL_STORAGE权限。

你可能感兴趣的:(Android 10/11 存储适配)