使用 Uri 在目录内创建空白文件
Create blank file inside directory with Uri
我正在尝试使用 Uri 在目录中创建一个文件。
对于要创建的新文件,我没有 Uri,但我有要在其中创建文件的目录。
我正在遵循本指南:https://developer.android.com/training/data-storage/shared/documents-files#grant-access-directory
所以现在我可以持久访问(比如)[Internal storage]/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 步:使用 DocumentFile.fromTreeUri()
获取与您从 ACTION_OPEN_DOCUMENT_TREE
获得的 Uri
关联的 DocumentFile
第 2 步:Call createFile()
on that DocumentFile
获取 DocumentFile
表示您希望放置在此树中的文档
第 3 步:在新的 DocumentFile
上调用 getUri()
以获得代表文档的 Uri
第 4 步:在 ContentResolver
上调用 openOutputStream()
,传入 Uri
,以获得 OutputStream
,您可以使用它写入文档
我正在尝试使用 Uri 在目录中创建一个文件。 对于要创建的新文件,我没有 Uri,但我有要在其中创建文件的目录。 我正在遵循本指南:https://developer.android.com/training/data-storage/shared/documents-files#grant-access-directory
所以现在我可以持久访问(比如)[Internal storage]/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 步:使用 DocumentFile.fromTreeUri()
获取与您从 ACTION_OPEN_DOCUMENT_TREE
Uri
关联的 DocumentFile
第 2 步:Call createFile()
on that DocumentFile
获取 DocumentFile
表示您希望放置在此树中的文档
第 3 步:在新的 DocumentFile
上调用 getUri()
以获得代表文档的 Uri
第 4 步:在 ContentResolver
上调用 openOutputStream()
,传入 Uri
,以获得 OutputStream
,您可以使用它写入文档