【发布时间】:2020-03-02 11:09:45
【问题描述】:
我正在尝试集成 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 中获取文件绝对路径的正确方法。我们将不胜感激。
【问题讨论】:
-
那是一种错误的方法。您不会尝试从 uri 获取路径。但是,当您需要文件路径时,您可以做的是先复制到文件系统,然后使用复制文件的路径。
-
@blackapps 你能附上一些链接来说明如何做到这一点吗?
-
您似乎根本没有阅读此网站,因为您的问题在过去几个月中每天在这里报告两次,请阅读。
-
但是为获得的 uri 打开一个输入流,为选择的文件路径打开一个输出流。然后从输入读取并将其写入输出。这与复制经典文件大致相同。
-
好的,我会试试这个。谢谢:)
标签: android android-10.0 storage-access-framework imebra