Получить путь к каталогу из содержимого URI

Я использую SDKACTION_OPEN_DOCUMENT_TREE намерение позволить пользователю выбрать каталог. Вот код:

private static final int REQUEST_PICK_FOLDER = 1;

// …

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_add_folder: {
            Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
            startActivityForResult(intent, REQUEST_PICK_FOLDER);
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_PICK_FOLDER && resultCode == Activity.RESULT_OK) {
        addFolder(data.getData());
    }
}

private void addFolder(Uri uri) {
    Uri docUri = DocumentsContract.buildDocumentUriUsingTree(uri, DocumentsContract.getTreeDocumentId(uri));
    Log.d(TAG, "Folder added: " + docUri.toString());
}

У меня есть URI (вероятно), указывающий на папку, которую я только что выбрал. Вот пример вывода:Folder added: content://com.android.externalstorage.documents/tree/FF30-E80D%3AImages/document/FF30-E80D%3AImages.

Теперь мне нужно получить абсолютный путь, что-то переводящее в этом случае/storage/sdcard1/Images, Я нашел некоторый код вaFileChooser который, кажется, работает, но не для SD-карт, что является моим основным вариантом использования.

Я мог бы разделить URI на%3A, если предыдущая часть является «основной», то используйте первый путь к внешнему хранилищу, если это что-то другое, используйте второй, но он кажется неправильным… Возможно, есть более детерминированный способ добиться этого?

Изменить: вот немного фона по этому вопросу. Мне не нужен путь для управления файлами. Но как представить это пользователю? Я определенно не могу показать емуcontent://com.android.externalstorage.documents/tree/FF30-E80D%3AImages/document/FF30-E80D%3AImagesЭто просто страшно.

Ответы на вопрос(1)

Ваш ответ на вопрос