首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有关Android 11作用域存储的全面数据迁移以及与< Android 10版本的兼容性

有关Android 11作用域存储的全面数据迁移以及与< Android 10版本的兼容性
EN

Stack Overflow用户
提问于 2022-01-04 19:29:22
回答 1查看 521关注 0票数 0

Android 11使我几乎所有的应用程序都过时了,因为范围内的存储更新!好吧,我先说:

选项1- android:requestLegacyExternalStorage="true"并不适用于我,即使我仍然针对sdk 29。

选项2- <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />也不起作用。

不过,这并不重要,因为选项1只能暂时工作,而选项2在发布到商店时需要被证明是合理的。

现在,它给我留下了选项#3 --将所有数据迁移到一个范围内的存储中。

我的应用程序基本上可以做三件事:

  • 将名为Test的文件夹从资产文件夹复制到Environment.getExternalStorageDirectory()中,因为我需要一个字符串路径.

生成图像并将其写入Environment.getExternalStorageDirectory().的

Environment.getExternalStorageDirectory().保存图像的

  • 读取

现在我的问题是:

  1. 由于需要字符串路径,所以需要将名为Test的文件夹从资产文件夹复制到范围内的存储中?如果是这样的话,是怎么做的?还是有别的办法?

  1. 如何将位图保存到范围内的存储中?我是否应该遵循本教程:https://www.youtube.com/watch?v=tYQ8AO58Aj0

  1. 如何从作用域存储读取保存的文件?

如果我做了以上所有的调整,

  1. 会对所有的安卓版本起作用吗?或者我基本上需要检查android版本并使用Environment.getExternalStorageDirectory()表示<10,作用域存储用于>= 10吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-04 20:27:17

将所有出现的Environment.getExternalStorageDirectory()替换为getExternalFilesDir(subfolderNameInScopedStorage) --这需要在Context上调用,因此在ActivityService内部,或者您可以通过使用getContext()方法从Fragment获得Context

这两种方法都返回File,这是一个用于存储文件的目录(但它们有不同的路径ofc),因此您的代码的其余部分不会更改,应该可以工作。

从Android4.4开始,getExternalFilesDir就出现在API中,所以在旧的设备上,您仍然可以使用旧的getExternalStorageDirectory()方法,只需在适当的位置制作一个if --您应该有一个通用的(static?)获取用于存储文件的主dir的方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70584083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档