Android各版本的外部存储配置建议

采用分区存储只能读写外部共享目录。
采用非分区存储是可以读写外部存储任何目录的。
注意:android10在分区存储模式下不能用文件路径读写外部共享文件,但在android11在分区存储下又可以用文件路径读写外部共享文件,所以如果您的项目存在通过文件路径来读写外部共享文件,要在配置文件中设置android:requestLegacyExternalStorage="true"来适配android10

1、运行在android 11上

当targetSdkVersion<=28:

结果 Environment.isExternalStorageLegacy() 为 true,采用的是非分区存储方法。

当targetSdkVersion=29:

不设置android:requestLegacyExternalStorage="true"

a 应用从非分区存储更新,结果Environment.isExternalStorageLegacy()为 true,采用的是非分区存储方法。
b 正常卸载安装 结果Environment.isExternalStorageLegacy()为 flase ,采用的是分区存储方法。

设置android:requestLegacyExternalStorage="true"

结果Environment.isExternalStorageLegacy()为 true,采用的是非分区存储方法。

当targetSdkVersion=30:

不设置android:preserveLegacyExternalStorage="true"

结果Environment.isExternalStorageLegacy()为 false,采用的是分区存储方法。

设置android:preserveLegacyExternalStorage="true"

a、应用从非分区存储更新,结果Environment.isExternalStorageLegacy()为 true,采用的是非分区存储方法。
b、应用正常卸载安装或者从分区存储更新,结果Environment.isExternalStorageLegacy()为 flase,采用的是分区存储方法。

2、运行在android 10上

当targetSdkVersion<=28:

结果Environment.isExternalStorageLegacy()为 true,采用的是非分区存储方法。

当targetSdkVersion>=29:

不设置android:requestLegacyExternalStorage="true"

a 应用从非分区存储更新,结果Environment.isExternalStorageLegacy()为 true,采用的是非分区存储方法。
b 正常卸载安装 结果Environment.isExternalStorageLegacy()为 flase ,采用的是分区存储方法。

设置android:requestLegacyExternalStorage="true"

结果Environment.isExternalStorageLegacy()为 true,采用的是非分区存储方法。

3、运行在android 9及以下

采用的是非分区存储方法

你可能感兴趣的:(Android各版本的外部存储配置建议)