Как получить реальный путь с ACTION_OPEN_DOCUMENT_TREE намерения. Lollipop API 21 и 22

Мое приложение загружает и распаковывает файл в определенной папке:

output = new FileOutputStream(realpath, true); output.write(buffer, 0, bytesRead); ZipFile zipFile = new ZipFile(realpath); 

С новым введением ACTION_OPEN_DOCUMENT_TREE Intent я хотел бы предложить пользователю выбрать эту папку.

При тестировании значений, полученных в моем onActivityResult, я получаю путь как /tree/primary:mynewfolder , который не является физическим реальным путем, например / sdcard / mynewfolder.

 Uri treeUri = data.getData(); String sPath=treeUri.getPath(); Log.v("Path from Tree ", sPath); 

Мой метод распаковки нужен реальный путь:

 ZipFile zipFile = new ZipFile(realpath); 

Как получить реальный путь, например / sdcard / mynewfolder, из предоставленного URI в Lollipop (API 21 и 22)?

Процесс получения реального пути из URI аналогичен предыдущему, но с небольшим добавлением:

 Uri uri = data.getData(); Uri docUri = DocumentsContract.buildDocumentUriUsingTree(uri, DocumentsContract.getTreeDocumentId(uri)); String path = getPath(this, docUri); 

Суть метода getPath () с промежуточными методами можно найти здесь: getPath ()

Intereting Posts
Почему Android Studio говорит мне использовать getSupportActionBar () вместо getActionBar ()? Запретить мое аудио приложение с помощью NuPlayer на Android Lollipop 5.x? Как повторять уведомление ежедневно в определенное время в android через фоновое обслуживание Возвращается HttpResponse на длину строки 0 FragmentTransaction.replace () Переход с постепенным переходом показывает фрагмент «призрак» Как установить edittext, чтобы показать кнопку поиска или ввести кнопку на клавиатуре? Ошибка контекста Android toast.makeText Android: Как получить текущее смещение X для RecyclerView? Получить выбранный элемент с помощью флажка в Listview Android Studio / Gradle build не может найти пользовательский класс приложения Android: Как инициализировать MediaRecorder без допустимой поверхности для предварительного просмотра видео? Создание хеш-ключа для приложения с использованием facebook sdk Android тройная буферизация – ожидаемое поведение? Как показать карту наклона в Android? Обнаруживать, если я в режиме выпуска или отладки в android