从 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
,然后获取绝对路径,但其中 none 似乎有效。
我不确定这是否是获取 Android 中文件绝对路径的正确方法 10。任何帮助将不胜感激。
此示例应用使用文件选择器打开和显示文件:
https://github.com/binarno/Imebra-V5-Android-Simple-Dicom-Viewer
应用程序将文件的打开和加载(如有必要)委托给 Android,然后通过 Imebra Pipes.
将文件传递给 Imebra
虽然稍微复杂一些,但它允许 Imebra 也可以从外部源(例如 Google 驱动器)读取文件。
免责声明:我是 Imebra 的作者
我正在尝试集成 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
,然后获取绝对路径,但其中 none 似乎有效。
我不确定这是否是获取 Android 中文件绝对路径的正确方法 10。任何帮助将不胜感激。
此示例应用使用文件选择器打开和显示文件: https://github.com/binarno/Imebra-V5-Android-Simple-Dicom-Viewer
应用程序将文件的打开和加载(如有必要)委托给 Android,然后通过 Imebra Pipes.
将文件传递给 Imebra虽然稍微复杂一些,但它允许 Imebra 也可以从外部源(例如 Google 驱动器)读取文件。
免责声明:我是 Imebra 的作者