(Android Studio)无法为SD卡上的文件创建MediaPlayer

时间:2019-11-08 21:13:09

标签: android android-mediaplayer

我正在扫描我的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。

我们非常感谢您的帮助,在此先感谢您!

1 个答案:

答案 0 :(得分:0)

尝试使用FileProvider模式创建Uri:

FileProvider.getUriForFile(context, context.packageName + ".provider", file)```