В моем приложении пользователь должен выбрать аудиофайл, который затем обрабатывает приложение. Проблема в том, что для того, чтобы приложение выполняло то, что я хочу делать с аудиофайлами, мне нужно, чтобы 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 с указанным файлом.