<manifest>
<application>
<!-- 表示已经适配了分区存储特性 -->
<meta-data
android:name="ScopedStorage"
android:value="true" />
</application>
</manifest>
manifest中有ScopedStorage 属性表示项目已适配了分区存储
但是targetsdk >=30 会被强制开启分区存储
那么我表示适配了分区存储有什么用?
可以使用 READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE 来申请权限了
这两个权限什么用,申请了可以访问外部存储卡的多媒体文件。但也只能用MediaStore Api访问
想访问外部存储卡的任何文件怎么办,MANAGE_EXTERNAL_STORAGE
MANAGE_EXTERNAL_STORAGE 为什么不直接申请,多次一举,因为上架谷歌市场,上架不了
,谷歌市场只允许文件管理app可以申请这个权限。
那我想简单的存储图片,视频,任何文件自己使用怎么办?
那么就不需要任何权限了,直接用getExternalFilesDir ,保存在外部存储卡,但是得是自己应用的私有存储目录。这都啥跟啥啊。别急,谷歌意思就是你自己目录,你随便造,无所谓 权限都不要你申请了,因为会随应用卸载数据也卸载,但是你首先得表示是适配了分区存储的。那你没适配分区存储,那就随便整吧,按照以前的逻辑来,申请读写权限,用getExternalFilesDir 还是 Environment.getExternalStorageDirectory 都可以
还有要注意的,getExternalFilesDir 是长期保存的数据,getExternalCacheDir是缓存数据,随时会被清理,可千万别用getExternalCacheDir 保存文件了,getExternalCacheDir 有啥用? 当它不存在好了,就是缓存大而临时的数据,不至于app数据很大。不是上市app,用不到这个属性吧
个人综合其他文章的阅读理解,没有实际操作验证, 仅供参考
参考:https://gitcode.net/mirrors/getActivity/XXPermissions?utm_source=csdn_github_accelerator
参考:https://blog.csdn.net/weixin_42324979/article/details/114259483
网友评论