如何在 Android 10 中创建公共文件夹/文件

Gri*_*ram 10 android android-10.0

Android Api 29 在文件和文件夹方面有很大的变化。到目前为止,我还没有找到在内部存储中创建一个公共可见文件夹的方法。我创建的每个文件夹只能被我的应用程序看到。

我编写了一个应用程序,它创建的数据文件应由其他应用程序接收,例如 Total Commander 将它们复制到目的地。一切正常,直到我激活 Api 29。我的一些客户确实使用像素手机,他们使用 Android 10。

如何在 Android 10 中创建公开的文件夹和文件?

这已被弃用:

Environment.getExternalStorageDirectory();
Environment.getExternalStoragePublicDirectory(type);
Run Code Online (Sandbox Code Playgroud)

当我使用

File root = context.getExternalFilesDir(null);
Run Code Online (Sandbox Code Playgroud)

创建的文件只能被我的应用程序看到。如何实现在 Android 10 之前有效的行为?

提前致谢。

Com*_*are 9

当我使用File root = context.getExternalFilesDir(null);创建的文件只能被我的应用程序看到

ACTION_OPEN_DOCUMENT如果用户选择您放置在该目录中的文档,则任何使用存储访问框架(例如,)的应用程序都可以看到它们。

我写了一个应用程序来创建其他应用程序可以获取的数据文件

其他应用无法访问 Android 10 上的外部或可移动存储,除非在有限的目录中,例如getExternalFilesDir()或通过非文件系统方式 ( ACTION_OPEN_DOCUMENT, MediaStore)。

如何在 Android 10 中创建公开的文件夹和文件?

上的使用getExternalFilesDir()和相关方法Context。或者,使用ACTION_CREATE_DOCUMENTACTION_OPEN_DOCUMENT_TREE并使用存储访问框架。在任何一种情况下,生成的文档都可以由也使用存储访问框架的其他应用程序使用。