【发布时间】:2021-09-15 01:02:24
【问题描述】:
我在 Playstore 上已经有一个 android 应用程序。它是一个使用 localhost 在 PC 和 Android 之间传输文件的应用程序。我在其中使用了以下 java 函数:
创建目录/文件/显示文件列表和许多其他文件功能(追加、字节读/写等):
file.mkdir
directory.listFiles();
file.createNewFile()
我也放了
requestLegacyExternalStorage="true"
在提供足够的读/写外部存储权限后,它在 android 10 上运行良好。
但问题是这些在 android 11 上不起作用,因为 requestLegacyExternalStorage 不起作用。我使用了 MANAGE_EXTERNAL_STORAGE 并且该应用程序运行良好,但问题是 Playstore 不允许它。 (不知道他们为什么拒绝更新)
我也使用过 getExternalFilesDir,它运行良好,但不希望数据位于 android 文件夹中,如果应用被删除则删除。
我也尝试使用下载位置,它可以工作,但问题是 getExternalStorageDirectory 已被弃用:
File file = new File(Environment.getExternalStorageDirectory()+"/"+Environment.DIRECTORY_DOWNLOADS,"FileChat");
所以我想问我如何管理/使用 android 11 的文件库来读取/写入/创建/删除文件和目录。它不应该在 android 文件夹中,因为它会在应用程序被删除后被删除。我可以像下载一样使用公共目录吗?如果可以,getExternalStorageDirectory() 的替代方法是什么?
我不需要读取用户数据。只想有一个目录,应用程序可以在其中存储文件。读取功能正在工作,因为用户使用意图选择了文件。
提前致谢。
【问题讨论】:
-
您可以使用
MediaStoreAPI 创建一个新文件夹。您不需要requestLegacyExternalStorage,因为它不会从 A11 开始工作。我建议您阅读 Scoped Storage 一次 -
是的,我知道。但是还有其他函数需要处理,比如附加到文件的字节。所以不想过多地更改代码。另外我猜 mediastore 仅限于媒体文件。
-
文件传输应用?对于应用程序的文件或其他应用程序的文件?差别很大。
-
but the problem is getExternalStorageDirectory is deprecated:是的。但这有什么关系?有用。在 Android 11 上。在 Android 12 上也是如此。如果您获得 MANAGE_EXTERNAL_STORAGE ,那么您肯定会使用它。所以它可以使用。 -
used getExternalFilesDir and it works perfect是的,但仅适用于应用程序自己的文件。我的问题又来了:也传输其他应用的文件?