Android 11使我几乎所有的应用程序都过时了,因为范围内的存储更新!好吧,我先说:
选项1- android:requestLegacyExternalStorage="true"并不适用于我,即使我仍然针对sdk 29。
选项2- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />也不起作用。
不过,这并不重要,因为选项1只能暂时工作,而选项2在发布到商店时需要被证明是合理的。
现在,它给我留下了选项#3 --将所有数据迁移到一个范围内的存储中。
我的应用程序基本上可以做三件事:
Environment.getExternalStorageDirectory()中,因为我需要一个字符串路径.生成图像并将其写入Environment.getExternalStorageDirectory().的
从Environment.getExternalStorageDirectory().保存图像的
现在我的问题是:
如果我做了以上所有的调整,
Environment.getExternalStorageDirectory()表示<10,作用域存储用于>= 10吗?发布于 2022-01-04 20:27:17
将所有出现的Environment.getExternalStorageDirectory()替换为getExternalFilesDir(subfolderNameInScopedStorage) --这需要在Context上调用,因此在Activity、Service内部,或者您可以通过使用getContext()方法从Fragment获得Context
这两种方法都返回File,这是一个用于存储文件的目录(但它们有不同的路径ofc),因此您的代码的其余部分不会更改,应该可以工作。
从Android4.4开始,getExternalFilesDir就出现在API中,所以在旧的设备上,您仍然可以使用旧的getExternalStorageDirectory()方法,只需在适当的位置制作一个if --您应该有一个通用的(static?)获取用于存储文件的主dir的方法
https://stackoverflow.com/questions/70584083
复制相似问题