【发布时间】:2023-01-23 01:28:36
【问题描述】:
在 Android 上调用了一个目录选择器:
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
intent.addFlags(
Intent.FLAG_GRANT_READ_URI_PERMISSION
or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
or Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
or Intent.FLAG_GRANT_PREFIX_URI_PERMISSION
)
activity?.startActivityForResult(intent, REQUEST_CODE_FOLDER_PERMISSION)
并在onActivityResult() 中获得了所述路由的 URI,作为表单的 URI(例如,在选择名为备份在外部存储的根目录中):
content://com.android.externalstorage.documents/tree/primary:backup
此时,您如何将文件写入该位置?在研究了关于如何使用 Media Store API 编写文件的各种答案后,我看到的所有示例都使用常量来引用现有的媒体目录,但就我而言,我想创建一个新文档(这是一个 JSON 文件)在用户选择的目录中。
【问题讨论】:
-
“你如何将文件写入该位置?” -- 使用
DocumentFile.fromTreeUri()包装Uri。在DocumentFile上使用 ``createFile()` 来创建代表该文件的DocumentFile。在文件的DocumentFile上使用getUri()以获得指向您要创建的文件的Uri。在ContentResolver上致电openOutputStream(),提供Uri,以获得该位置的OutputStream。然后,将您的内容写入该OutputStream、flush()和close()流,您应该完成了。
标签: android mediastore