我正在尝试使用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)
谢了。
我猜您首先使用action_open_document_tree
获取URI
。 如果是:
步骤#1:使用DocumentTree.FromTreeURI()
获取与您从Action_Open_Document_Tree
获得的URI
相关联的DocumentFile
步骤#2:对DocumentFile
调用CreateFile()
,以获得一个DocumentFile
,该DocumentFile
表示您希望放置在此树中文档
步骤#3:对新DocumentFile
调用getURI()
,以获得表示文档的URI
步骤#4:调用ContentResolver
上OpenOutputStream()
,传入URI
,以获得一个OutputStream
,您可以使用它写入文档