AndroidAndroidandroid版本监容

targetSdkVersion 升级到29、30文件处理

2021-05-26  本文已影响0人  zhongjh

最近公布一个非常丰富的开源库,如果你需要相册、录制、录音等操作,那么这个也许对你有一定的帮助:
https://www.jianshu.com/p/8a0accffd0e1

android12要来了,很多老app还在29以下,该文章就是讲述升级到29、30关于文件的处理。

在总结多种情况之前,我们再次确认下目前有哪些存储目录
Android版本迭代变化

在29版本后,只能操作本身内部存储私有目录、外部存储私有目录、共享存储,但是依然可以通过android:requestLegacyExternalStorage="true"来设置(在AndroidManifest.xml中的application添加该配置),不启用分区存储,一切照旧。
但是30版本以后,就强制性的只能操作规定的目录,这个时候依然有个兼容配置设置,android:preserveLegacyExternalStorage="true"(在AndroidManifest.xml中的application添加该配置),这个配置使得手机appSdk30版本以下,更新appSdk30版本以后,依然不启用分区存储,一切照旧。

那么我简单总结多种情况和解决方式:
如果我app缓存文件存储在外部存储,那么如何处理升级到30并且迁移文件呢?

所以最终是设置android:preserveLegacyExternalStorage="true",所有目录按照外部存储私有目录来进行读写操作,判断外部存储如果可以操作文件并且存在需要迁移的文件夹,先复制过来,并且需要增加一个全局缓存标记已经进行迁移成功。
如果用到数据库切记先迁移文件后再初始化数据库

上一篇 下一篇

猜你喜欢

热点阅读