В моем приложении пользователь должен выбрать аудиофайл, который затем обрабатывает приложение. Проблема в том, что для того, чтобы приложение могло делать то, что я хочу, с аудиофайлами, мне нужно, чтобы URI был в формате файла. Когда я использую собственный музыкальный проигрыватель Android для поиска аудиофайла в приложении, URI представляет собой URI контента, который выглядит следующим образом:
content://media/external/audio/media/710
Однако, используя популярный файловый менеджер Astro, я получаю следующее:
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
Последнее гораздо более доступно для меня, но, конечно, я хочу, чтобы приложение имело функциональность с аудиофайлом, который выбирает пользователь, независимо от того, какую программу он использует для просмотра своей коллекции. Итак, мой вопрос: есть ли способ преобразовать content://
URI стиля в file://
URI? Иначе что бы вы мне посоветовали для решения этой проблемы? Вот код, который вызывает средство выбора для справки:
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 с указанным файлом.