使用 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,您可以使用它写入文档