这个问题在这里已经有答案了:
android kotlin:获取一个filenotfoundexception,其文件名是从文件选择器中选择的(4个答案)
android-获取从文件资源管理器中选择的.txt文件的实际路径(1个答案)
昨天关门了。
在androidq和androidr中使用存储访问框架时,如何从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。
现在,为了在androidq及更高版本中实现这个目标(即在pdf查看器中打开pdf文件),如何从这个uri或任何替代解决方案中获得真实的文件路径。
任何帮助都将不胜感激:)
暂无答案!
目前还没有任何答案,快来回答吧!