Android: Получение URI файла из URI контента?

В моем приложении пользователь должен выбрать аудиофайл, который затем обрабатывает приложение. Проблема в том, что для того, чтобы приложение могло делать то, что я хочу, с аудиофайлами, мне нужно, чтобы URI был в формате файла. Когда я использую собственный музыкальный проигрыватель Android для поиска аудиофайла в приложении, URI представляет собой URI контента, который выглядит следующим образом:

content://media/external/audio/media/710

Однако, используя популярное приложение для управления файлами Astro, я получаю следующее:

file:///sdcard/media/audio/ringtones/GetupGetOut.mp3

Последнее гораздо более доступно для меня, но, конечно, я хочу, чтобы приложение имело функциональность с аудиофайлом, который выбирает пользователь, независимо от того, какую программу он использует для просмотра своей коллекции. Итак, мой вопрос: есть ли способ преобразовать URI стиля content: // в URI file: // ? Иначе, что бы вы посоветовали мне решить эту проблему? Вот код, который вызывает средство выбора для справки:

Intent ringIntent = new Intent();
ringIntent.setType("audio/mp3");
ringIntent.setAction(Intent.ACTION_GET_CONTENT);
ringIntent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(ringIntent, "Select Ringtone"), SELECT_RINGTONE);

Я делаю следующее с URI содержимого:

m_ringerPath = m_ringtoneUri.getPath();
File file = new File(m_ringerPath);

Затем выполняю некоторые действия FileInputStream с указанным файлом.

107
задан ROMANIA_engineer 1 November 2017 в 22:22
поделиться