【发布时间】:2018-03-15 15:35:16
【问题描述】:
我正在尝试解决这个问题几个小时,但找不到合适的解决方案: 我正在尝试播放媒体文件(Mp3/Ogg),但总是得到 FileNotFoundException(我确定它在那里;))
这是我尝试的:
检查 SD 卡是否可用。
检查是否授予读/写权限。
加载/播放歌曲。
if(isExternalStorageReadable() && isExternalStorageWritable())
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
Log.v("Permission","Readingpermission is granted");
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
Log.v("Permission","Writingpermission is granted");
}
playSong(getExternalFilesDir(Environment.DIRECTORY_MUSIC).toString() + "/t1.mp3");
到目前为止,这部分代码正在运行。
但是一旦涉及到 playSong(String) :
try {
MediaPlayer mediaplayer = new MediaPlayer();
mediaplayer.setDataSource(path);
mediaplayer.prepare();
mediaplayer.start();
} catch (Exception e){
Log.e("Mediaplayer", e.toString());
}
程序在尝试 setDataSource 时崩溃并出现此异常:
E/Mediaplayer: java.io.FileNotFoundException: /storage/emulated/0/Android/data/OMSclient.omsgui/files/Music/t1.mp3
我错过了什么?我一无所知。
提前致谢。
编辑:
好的,我发现了以下问题:
如果我只是执行
playSong("storage/17E5-1C14/Android/data/OMSclient.omsgui/files/Music/t1.ogg");
它工作正常,但如果我使用:
playSong("/storage/emulated/0/Android/data/OMSclient.omsgui/files/Music/t1.mp3");
或
playSong("storage/emulated/0/Android/data/OMSclient.omsgui/files/Music/t1.mp3");
它没有..
为什么? ...
【问题讨论】:
-
你的 targetSdkVersion 是什么?
-
现在是 19 岁,我至少需要 15 个字符才能发表评论
-
我还在考虑运行时权限。你的模拟器是什么级别的?试试 22 或更少的模拟器。
-
但是如果你看一下我的编辑,它可以从外部 SD 卡播放歌曲....而且它也不能在我的手机上工作...授予外部写入和读取权限
-
只是为了清楚。 “授予读取权限”和“授予写入权限”正在打印到日志?
标签: java android file exception android-mediaplayer