繁体   English   中英

从 Android 10 中的 Uri 获取绝对路径

[英]Get absolute path from Uri in Android 10

我正在尝试集成Imebra库以在应用程序内加载.dcm文件。 问题是,根据文档,我需要将文件的绝对路径传递给Imebra ,如下所示:

val loadDataSet = CodecFactory.load("myFile.dcm")

为了打开 DCM 文件,我使用以下代码:

 val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
                addCategory(Intent.CATEGORY_OPENABLE)
                type = "*/*"
                putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
            }

            startActivityForResult(intent, RC_OPEN_FILES)

我可以使用以下代码获取所有选定文件的 URI 列表:

 if (data != null) {
                val clipData = data.clipData
                if (clipData != null) {
                    // Multiple files selected
                    val clipDataUriList = arrayListOf<Uri>()
                    for (i in 0 until clipData.itemCount) {
                        clipDataUriList.add(clipData.getItemAt(i).uri)
                    }
                    processDcmFiles(clipDataUriList)
                } else {
                    // Single file selected
                    data.data?.let { processDcmFiles(arrayListOf(it)) }
                }

            }

我尝试使用uri.getPath()并使用 URI 创建一个File ,然后获取绝对路径,但它们似乎都不起作用。

我不确定这是否是在 Android 10 中获取文件绝对路径的正确方法。任何帮助将不胜感激。

此示例应用程序使用文件选择器打开并显示文件: https : //github.com/binarno/Imebra-V5-Android-Simple-Dicom-Viewer

该应用程序将文件的打开和加载(如有必要)委托给 Android,然后通过 Imebra Pipes将文件传递给 Imebra。

虽然稍微复杂一些,但它允许 Imebra 也从外部来源(例如 Google Drive)读取文件。

免责声明:我是 Imebra 的作者

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM