<manifest>
<application>
<!-- 表示已經(jīng)適配了分區(qū)存儲(chǔ)特性 -->
<meta-data
android:name="ScopedStorage"
android:value="true" />
</application>
</manifest>
manifest中有ScopedStorage 屬性表示項(xiàng)目已適配了分區(qū)存儲(chǔ)
但是targetsdk >=30 會(huì)被強(qiáng)制開(kāi)啟分區(qū)存儲(chǔ)
那么我表示適配了分區(qū)存儲(chǔ)有什么用?
可以使用 READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE 來(lái)申請(qǐng)權(quán)限了
這兩個(gè)權(quán)限什么用,申請(qǐng)了可以訪問(wèn)外部存儲(chǔ)卡的多媒體文件。但也只能用MediaStore Api訪問(wèn)
想訪問(wèn)外部存儲(chǔ)卡的任何文件怎么辦,MANAGE_EXTERNAL_STORAGE
MANAGE_EXTERNAL_STORAGE 為什么不直接申請(qǐng),多次一舉,因?yàn)樯霞芄雀枋袌?chǎng),上架不了
,谷歌市場(chǎng)只允許文件管理app可以申請(qǐng)這個(gè)權(quán)限。
那我想簡(jiǎn)單的存儲(chǔ)圖片,視頻,任何文件自己使用怎么辦?
那么就不需要任何權(quán)限了,直接用getExternalFilesDir ,保存在外部存儲(chǔ)卡,但是得是自己應(yīng)用的私有存儲(chǔ)目錄。這都啥跟啥啊。別急,谷歌意思就是你自己目錄,你隨便造,無(wú)所謂 權(quán)限都不要你申請(qǐng)了,因?yàn)闀?huì)隨應(yīng)用卸載數(shù)據(jù)也卸載,但是你首先得表示是適配了分區(qū)存儲(chǔ)的。那你沒(méi)適配分區(qū)存儲(chǔ),那就隨便整吧,按照以前的邏輯來(lái),申請(qǐng)讀寫(xiě)權(quán)限,用getExternalFilesDir 還是 Environment.getExternalStorageDirectory 都可以
還有要注意的,getExternalFilesDir 是長(zhǎng)期保存的數(shù)據(jù),getExternalCacheDir是緩存數(shù)據(jù),隨時(shí)會(huì)被清理,可千萬(wàn)別用getExternalCacheDir 保存文件了,getExternalCacheDir 有啥用? 當(dāng)它不存在好了,就是緩存大而臨時(shí)的數(shù)據(jù),不至于app數(shù)據(jù)很大。不是上市app,用不到這個(gè)屬性吧
個(gè)人綜合其他文章的閱讀理解,沒(méi)有實(shí)際操作驗(yàn)證, 僅供參考
參考:https://gitcode.net/mirrors/getActivity/XXPermissions?utm_source=csdn_github_accelerator
參考:https://blog.csdn.net/weixin_42324979/article/details/114259483