采用分區(qū)存儲只能讀寫外部共享目錄晚唇。
采用非分區(qū)存儲是可以讀寫外部存儲任何目錄的浩嫌。
注意:android10在分區(qū)存儲模式下不能用文件路徑讀寫外部共享文件,但在android11在分區(qū)存儲下又可以用文件路徑讀寫外部共享文件遍搞,所以如果您的項目存在通過文件路徑來讀寫外部共享文件疗认,要在配置文件中設置android:requestLegacyExternalStorage="true"
來適配android10
1较锡、運行在android 11上
當targetSdkVersion<=28:
結果 Environment.isExternalStorageLegacy()
為 true业稼,采用的是非分區(qū)存儲方法。
當targetSdkVersion=29:
不設置android:requestLegacyExternalStorage="true"
a 應用從非分區(qū)存儲更新蚂蕴,結果Environment.isExternalStorageLegacy()
為 true低散,采用的是非分區(qū)存儲方法俯邓。
b 正常卸載安裝 結果Environment.isExternalStorageLegacy()
為 flase ,采用的是分區(qū)存儲方法熔号。
設置android:requestLegacyExternalStorage="true"
結果Environment.isExternalStorageLegacy()
為 true稽鞭,采用的是非分區(qū)存儲方法。
當targetSdkVersion=30:
不設置android:preserveLegacyExternalStorage="true"
結果Environment.isExternalStorageLegacy()
為 false引镊,采用的是分區(qū)存儲方法朦蕴。
設置android:preserveLegacyExternalStorage="true"
a、應用從非分區(qū)存儲更新弟头,結果Environment.isExternalStorageLegacy()
為 true吩抓,采用的是非分區(qū)存儲方法。
b赴恨、應用正常卸載安裝或者從分區(qū)存儲更新疹娶,結果Environment.isExternalStorageLegacy()
為 flase,采用的是分區(qū)存儲方法伦连。
2雨饺、運行在android 10上
當targetSdkVersion<=28:
結果Environment.isExternalStorageLegacy()
為 true,采用的是非分區(qū)存儲方法惑淳。
當targetSdkVersion>=29:
不設置android:requestLegacyExternalStorage="true"
a 應用從非分區(qū)存儲更新额港,結果Environment.isExternalStorageLegacy()
為 true,采用的是非分區(qū)存儲方法歧焦。
b 正常卸載安裝 結果Environment.isExternalStorageLegacy()
為 flase 锹安,采用的是分區(qū)存儲方法。
設置android:requestLegacyExternalStorage="true"
結果Environment.isExternalStorageLegacy()
為 true倚舀,采用的是非分區(qū)存儲方法。
3忍宋、運行在android 9及以下
采用的是非分區(qū)存儲方法