java—在Android10和11中,如何在使用scope存储访问框架时从uri获取真实的文件路径

um6iljoc  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(150)

这个问题在这里已经有答案了

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或任何替代解决方案中获得真实的文件路径。
任何帮助都将不胜感激:)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题