android - 尽管创建了文件,但 Android Intent ACTION_CREATE_DOCUMENT 始终导致 URI==null
问题描述
我尝试使用以下意图将文件写入用户定义的位置以接收文件 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 也始终为空。授予文件系统访问权限,因为我从存储中读取文件没有任何问题。我错过了什么?
解决方案
您没有查看 的data
参数onActivityResult()
。相反,您正在查看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)
}
推荐阅读
- unity3d - Unity UI 屏幕尺寸问题
- android - 更新 Android Studio 停止颤振框架
- django - 我在我的谷歌驱动器中搜索了我的媒体文件。我可以在 Django 中获取我的媒体文件吗?
- python - 带有 XML 列和多个值的 Pyspark 数据框:从中提取列
- python - 如何使用 python scrapy xpath 访问 < script type = "text/x-magento-init" > 标签?
- javascript - Nodejs GPU.js 使用 GPU 比使用 CPU 慢
- javascript - 防止儿童抓取所有触摸事件
- android - getQuantityString 在数量为“一”时返回字符串的一部分
- xamarin.forms - 使用文件选择器获取“输入字符串的格式不正确”
- autodesk-forge - Forge Api - 搜索