Android MediaPlayer IOException

gma*_*ter 3 java android android-mediaplayer

我正在写一个程序,我需要从存储中播放一首歌.我为此设置了一个MediaPlayer(下面的代码片段),但不断得到一个java.io.IOException:准备失败:status = 0x1.一些网站表示可能会发生此错误,因为我尝试阅读的文件不是世界可读的.如果是这样,我怎样才能从程序中更改文件权限,解决此问题或其他解决方案.如果没有,请帮我弄清楚这有什么问题.提前致谢.

MediaPlayer player = new MediaPlayer();
player.reset();
player.setDataSource(selectedFilePath);
player.prepare();
player.start();
Run Code Online (Sandbox Code Playgroud)

Rya*_*ary 7

你在哪里尝试从中读取文件?你可能正在查看/ sdcard/area,而你的应用程序没有read_external_storage的能力

如果是这种情况,请确保将以下行添加到清单中

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

[编辑]我不确定你要从哪里加载,但它可能有助于使用描述符而不是路径.看看这是否有帮助:

FileInputStream fis = new FileInputStream(locationOfFile);
mediaPlayer.setDataSource(fis.getFD());
Run Code Online (Sandbox Code Playgroud)

如果这仍然没有帮助,我建议您尝试使用其他文件名,以确保您的媒体播放器设置正确.或者你可以做类似的事情

File thisFile = new File("/storage/sdcard0/Music/song.mp3");
if (thisFile.exists())
   Log.v("file", "Exists");
else
   Log.v("file", "Could not be located.");
Run Code Online (Sandbox Code Playgroud)

  • 我有兴趣知道为什么`FileInputStream`比将路径传递到`setDataSource`更可靠,但是它有效,所以谢谢你. (2认同)