Получить абсолютный путь от Ури в Android 10 - PullRequest
1 голос
/ 02 марта 2020

Я пытаюсь интегрировать библиотеку 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() и создать File, используя URI, а затем получить абсолютный путь, но ни один из них, кажется, не работает.

Я не уверен, что это правильный подход для получения абсолютного пути к файлам в Android 10. Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 02 марта 2020

В этом примере приложения для выбора и отображения файла используется селектор файлов: https://github.com/binarno/Imebra-V5-Android-Simple-Dicom-Viewer

Приложение делегирует открытие и загрузку файла (при необходимости) на Android , а затем передает файл в Imebra через Imebra Pipes .

. Хотя он немного сложнее, он позволяет Imebra считывать файлы также из внешних источников (например, Google Drive).

Отказ от ответственности: я автор Imebra

...