У меня есть ресурс (музыкальный файл), указанный Uri. Как я могу проверить, доступно ли это до того, как я попытаюсь воспроизвести его с помощью MediaPlayer?
Его Uri хранится в базе данных, поэтому, когда файл удален или на внешнем хранилище, которое размонтировано, я просто получаю исключение, когда я вызываю MediaPlayer.prepare().
В приведенной выше ситуации я хотел бы играть в стандартную мелодию для систем. Я мог бы, конечно, сделать это после того, как поймаю выше исключения, но может быть, есть еще более элегантное решение?
изменить: Я забыл упомянуть, что музыкальные файлы Uri фактически приобретены с помощью RingtonePreference. Это означает, что я могу заставить Uri указывать на мелодию звонка на внутреннем хранилище, внешнем хранилище или на стандартную систему рингтонов.
Примеры Uri:
- content://settings/system/ringtone - для выбора мелодии звонка по умолчанию
- content://media/internal/audio/media/60 - для мелодии звонка во внутреннем хранилище
- content://media/external/audio/media/192 - для рингтона на внешнем хранилище
Я был доволен предложенным "новым методом File (путь).exists(), поскольку он спас меня от упомянутого исключения, но через некоторое время я заметил, что он возвращает false для всех моих вариантов рингтонов... Любые другие идеи?