【发布时间】:2020-12-08 17:16:25
【问题描述】:
在作用域存储应用程序可以创建这样的文件集之前
if(isStoragePermissionGranted()){
val textFileDir = File(Environment.getExternalStorageDirectory(), getString(R.string.app_name)+"/"+"Textfiles/")
textFileDir.mkdir()
for(i in 0 until 5){
val textfile = File(textFileDir, String.format("%s-%s.txt", "TextFile", i))
textfile.writeText("Content")
}
}
但是对于范围存储,我们创建的每个文件都必须单独授予权限
const val CREATE_FILE = 1
private fun createFile(pickerInitialUri: Uri) {
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "text/plain"
putExtra(Intent.EXTRA_TITLE, "invoice.txt")
putExtra(DocumentsContract.EXTRA_INITIAL_URI, pickerInitialUri)
}
startActivityForResult(intent, CREATE_FILE)
}
我们如何使用访问存储框架在不逐个授予权限的情况下创建一组文本文件并将内容写入它们。
【问题讨论】:
-
使用
ACTION_OPEN_DOCUMENT_TREE请求访问文档树。然后,使用DocumentFile.fromTreeUri()获取代表该树的DocumentFile。然后,您可以在该DocumentFile上使用createFile()在该树中创建多个文档。 -
mkdir() 和 mkdirs() 创建目录。不是文件。
标签: android kotlin scoped-storage