问题描述
在 android Q 和 android R 中使用存储访问框架时如何从 URI 获取真实文件路径。我的代码使用系统文件选择器即选择 pdf 文件
Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
type = "application/pdf"
addCategory(Intent.CATEGORY_OPENABLE)
flags = flags or Intent.FLAG_GRANT_READ_URI_PERMISSION
startActivityForResult(intent,OPEN_PDF_REQUEST)
}
override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
super.onActivityResult(requestCode,resultCode,data)
if (requestCode == OPEN_PDF_REQUEST && resultCode == RESULT_OK) {
data?.data?.also { documentUri ->
//Permission needed if you want to retain access even after reboot
contentResolver.takePersistableuriPermission(
documentUri,Intent.FLAG_GRANT_READ_URI_PERMISSION
)
val documentFile = DocumentFile.fromSingleUri(this,documentUri)
val fileUri = documentFile?.uri
Log.d("TAG","path = ${fileUri?.path}")
}
}
}
Logcat 输出
URI= content://com.android.providers.media.documents/document/document%3A266
为了在 PdfViewer 中打开文件,我无法从这个 URI 获取真实的文件路径,也无法在 PDFViewer 中打开这个 URI。
现在,如何从该 URI 或任何替代解决方案获取真实文件路径,以在 android Q 及更高版本中实现此目标(即在 pdf 查看器中打开 pdf 文件)。
任何帮助将不胜感激:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)