Android Intent ACTION_CREATE_DOCUMENT 总是导致 URI==null 尽管正在创建文件
Android Intent ACTION_CREATE_DOCUMENT always leads to URI==null despite file being created
我尝试使用以下意图将文件写入用户定义的位置以接收文件 uri
val saveFile = Intent()
saveFile.action = Intent.ACTION_CREATE_DOCUMENT
saveFile.type = "application/pdf"
saveFile.addCategory(Intent.CATEGORY_OPENABLE)
saveFile.putExtra(Intent.EXTRA_TITLE, "123.pdf")
activity.startActivityForResult(saveFile, 123)
然后读出结果
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == 123 && resultCode == RESULT_OK && intent != null) {
Log.d(TAG, "URI: ${intent.data}")
}
else
super.onActivityResult(requestCode, resultCode, data)
}
但 URI 始终为 null,即使 intent 每次都创建一个空文件。文件系统访问被授予,因为我从存储中读取文件没有任何问题。我错过了什么?
您没有查看 onActivityResult()
的 data
参数。相反,您正在查看用于创建 activity 的 Intent
。将您的第二个代码片段替换为:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == 123 && resultCode == RESULT_OK && data != null) {
Log.d(TAG, "URI: ${data.data}")
}
else
super.onActivityResult(requestCode, resultCode, data)
}
我尝试使用以下意图将文件写入用户定义的位置以接收文件 uri
val saveFile = Intent()
saveFile.action = Intent.ACTION_CREATE_DOCUMENT
saveFile.type = "application/pdf"
saveFile.addCategory(Intent.CATEGORY_OPENABLE)
saveFile.putExtra(Intent.EXTRA_TITLE, "123.pdf")
activity.startActivityForResult(saveFile, 123)
然后读出结果
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == 123 && resultCode == RESULT_OK && intent != null) {
Log.d(TAG, "URI: ${intent.data}")
}
else
super.onActivityResult(requestCode, resultCode, data)
}
但 URI 始终为 null,即使 intent 每次都创建一个空文件。文件系统访问被授予,因为我从存储中读取文件没有任何问题。我错过了什么?
您没有查看 onActivityResult()
的 data
参数。相反,您正在查看用于创建 activity 的 Intent
。将您的第二个代码片段替换为:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == 123 && resultCode == RESULT_OK && data != null) {
Log.d(TAG, "URI: ${data.data}")
}
else
super.onActivityResult(requestCode, resultCode, data)
}