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

时间:2019-10-11 17:28:48

标签: android android-10.0

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

我编写了一个应用程序,该应用程序创建了应由其他应用程序拾取的数据文件,例如,Total Commander将其复制到目标位置。 在激活Api 29之前,一切正常。我的某些客户端确实使用像素电话,而他们使用的是Android 10。

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

已弃用:

-lomp

以及当我使用

cmake_minimum_required(VERSION 3.12)
project(openmptest CXX)

add_executable(sample sample.cpp)

find_package(OpenMP REQUIRED)
target_link_libraries(sample PRIVATE OpenMP::OpenMP_CXX)

创建的文件只能由我的应用查看。 如何实现Android 10之前有效的行为?

谢谢。

2 个答案:

答案 0 :(得分:2)

  

当我使用File root = context.getExternalFilesDir(null);时,创建的文件只能由我的应用查看

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

  

我编写了一个应用程序,该应用程序创建了应由其他应用程序拾取的数据文件

除了受限制的目录(例如getExternalFilesDir()或通过非文件系统方式(ACTION_OPEN_DOCUMENTMediaStore)以外,其他应用都无法访问Android 10上的外部或可移动存储。

  

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

getExternalFilesDir()上使用Context和相关方法。或者,使用ACTION_CREATE_DOCUMENTACTION_OPEN_DOCUMENT_TREE并使用存储访问框架。无论哪种情况,生成的文档都可以由其他也使用Storage Access Framework的应用程序使用。

答案 1 :(得分:1)

从Android 10开始,您应该使用SAF,并让用户使用ACTION_OPEN_DOCUMENT_TREE选择目录。

如果您需要一个简单的示例。您可以找到它here

或者,当您的应用程序不是新发布的时,您可以在清单中使用requestLegacyExternalStorage = true。但是,这是以后不应使用的功能,因为这是Google提供的短期解决方案。

注意:在未来的Android版本中,用户将无法选择整个外部文件目录和Downloads目录,因此很遗憾,请记住,我们也将无法访问这些文件!有关更多信息,您可以单击here