У моїй програмі користувач повинен вибрати аудіофайл, який програма потім обробляє. Проблема полягає в тому, що для того, щоб програма робила те, що я хочу, щоб це робилося зі звуковими файлами, мені потрібен 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 із вказаним файлом.