我正在扫描我的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。
我们非常感谢您的帮助,在此先感谢您!
答案 0 :(得分:0)
尝试使用FileProvider模式创建Uri:
FileProvider.getUriForFile(context, context.packageName + ".provider", file)```