提问者:小点点

用Uri在目录中创建空白文件


我正在尝试使用URI在目录中创建一个文件。 对于要创建的新文件,我没有Uri,但是对于要在其中创建文件的目录,我有Uri。 我遵循以下指南:https://developer.android.com/training/data-storage/shared/documents-files#grant-access-directory

所以现在我有了对(比如说)[Internal store]/myfilescollection的持久访问权限,我也有了访问它的Uri。 我想在这个目录中创建一个文件,基本上(比如说)[Internal storage]/myfilescollection/myfile.txt

我不想使用intent.action_create_document,因为它会为我要创建的每个文件打开系统选择器。 此外,我对该文件夹有持久的写访问权限。 那么有没有什么方法可以在不使用意图的情况下创建文件呢?

编辑:用于获得持久访问权限的代码:

val contentResolver = applicationContext.contentResolver
val takeFlags: Int = Intent.FLAG_GRANT_READ_URI_PERMISSION or
        Intent.FLAG_GRANT_WRITE_URI_PERMISSION
contentResolver.takePersistableUriPermission(uri, takeFlags)

谢了。


共1个答案

匿名用户

我猜您首先使用action_open_document_tree获取URI。 如果是:

步骤#1:使用DocumentTree.FromTreeURI()获取与您从Action_Open_Document_Tree获得的URI相关联的DocumentFile

步骤#2:对DocumentFile调用CreateFile(),以获得一个DocumentFile,该DocumentFile表示您希望放置在此树中文档

步骤#3:对新DocumentFile调用getURI(),以获得表示文档的URI

步骤#4:调用ContentResolverOpenOutputStream(),传入URI,以获得一个OutputStream,您可以使用它写入文档