Я сканирую SD-карту на наличие аудиофайлов и сохраняю их пути к файлам. Это отлично работает. Позже я получаю информацию о пути к файлу для создания URI:
MediaPlayer mp = MediaPlayer.create(this, Uri.fromFile(new File(filepath)));
Однако это приводит к следующей ошибке:
I/System.out: URI: file:///storage/123A-45BC/Folder/Audio.mp3
E/MediaPlayerNative: error (1, -2147483648)
D/MediaPlayer: create failed:
java.io.IOException: Prepare failed.: status=0x1
В этом и заключается вся проблема. Ниже приведены лишь несколько других вещей, которые я пробовал с одинаковыми или разными ошибками.
-) Я попытался создать MediaPlayer и указать пути к файлам следующим образом:
MediaPlayer mp = new MediaPlayer();
mp.reset();
try {
mp.setDataSource(filepath);
// or: mp.setDataSource(this, Uri.fromFile(new File(filepath)));
mp.prepare();
}
catch ...
// This results in the same error.
-) ИЯ попытался с Uri.parse:
MediaPlayer mp = MediaPlayer.create(this, Uri.parse(filepath));
// Uri.parse results in an "java.io.FileNotFoundException: No content provider" error,
// unlike Uri.fromFile.
// This tells me that I am on the right track with Uri.fromFile.
-) Это проблема отсутствия пользовательских разрешений? У меня есть:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
file.exists () и file.canRead () оба возвращают true.
Любая помощь очень ценится, и заранее спасибо!