在使用Android Kotlin的ACTION_CREATE_DOCUMENT时,有时会遇到URI无效的问题。这个问题通常出现在尝试使用ACTION_CREATE_DOCUMENT创建一个新的文档,并且指定了一个无效的URI路径。
下面是一个示例代码,用于解决ACTION_CREATE_DOCUMENT提供的URI无效的问题:
// 创建一个Intent,用于选择文档保存的位置
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT)
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.type = "application/pdf"
intent.putExtra(Intent.EXTRA_TITLE, "example.pdf")
// 启动选择文档保存位置的Activity,并获取返回的URI
startActivityForResult(intent, CREATE_DOCUMENT_REQUEST_CODE)
// 在onActivityResult方法中处理返回的URI
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == CREATE_DOCUMENT_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
data?.data?.let { uri ->
// 在这里处理有效的URI,例如保存文件或其他操作
// ...
}
}
}
上述代码中,我们使用了ACTION_CREATE_DOCUMENT来创建一个新的文档,指定了文档的类型为"application/pdf",并设置了文档的默认名称为"example.pdf"。然后,我们启动选择文档保存位置的Activity,并通过startActivityForResult方法获取返回的URI。
在onActivityResult方法中,我们检查requestCode和resultCode是否和我们启动Activity时的值匹配。如果匹配成功,则可以通过data?.data获取返回的有效URI,并进行后续操作。
请注意,URI无效的问题可能会因为不同的设备和操作系统版本而有所不同。如果上述解决方法无效,您可能需要根据具体的问题进行调试和处理。