getQternalStoragePublicDirectory在Android中已弃用Q.如何将文档文件保存到公共目录中?

时间:2019-09-28 13:26:18

标签: android

我想访问公共目录文件,但不能存储:图像,音频和视频! 我需要存储:文档(例如:doc,pdf,bak,zip等)。 即使我的应用程序将被卸载,我也需要将这些文档保留在用户设备上。而且我需要用户可以从其他应用访问这些文档文件。

在早期版本的android中,对于documents文件夹,我可以简单地写下下一行:

File myDirectory = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_DOCUMENTS), "My documents");
if (!myDirectory.exists()) {
   if(myDirectory.mkdirs()){
      // directory exists, can place any files here                
   }
}

如何在android Q中做到这一点? 还是没有办法,我只需要告诉用户我的应用程序根本不支持Android 10?

p.s。 我看到这个: getExternalStoragePublicDirectory deprecated in Android Q -我的问题没有答案

1 个答案:

答案 0 :(得分:1)

  

如何在android Q中做到这一点?

使用ACTION_CREATE_DOCUMENT允许用户选择一个位置,然后将您的内容存储在您获得的Uri上。

或者,使用ACTION_OPEN_DOCUMENT_TREE允许用户选择树(例如目录)。您可以将返回的UriDocumentFile.fromTreeUri()一起使用,以创建子文档。在每种情况下,您都可以使用Uri来存储内容。

给定Uri,您可以使用ContentResolveropenOutputStream()将内容写入Uri所标识的位置。

This sample Java app(和its Kotlin counterpart)演示了如何使用文件和内容Uri的值。我使用ACTION_OPEN_DOCUMENT允许用户选择现有的文本文件,或者使用ACTION_CREATE_DOCUMENT允许用户创建新的文本文件。