当前位置: 首页 > 知识库问答 >
问题:

找不到媒体播放器文件异常

乜建柏
2023-03-14

我正在编写一个基本的android mp3播放器应用程序,它使用MediaPlayer应用程序播放本地存储在Android手机上的mp3文件。

但是,每当我尝试调用MediaPlayer.create()时,我都会得到一个java.io.FileNotFoundException

我已经检查以确保mp3在正确的路径中,我已经尝试在模拟的Android和我自己的手机上运行它,但我一直得到同样的错误。

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath() + 
       "/Download/sam_stone.mp3");

    med = MediaPlayer.create(getApplicationContext(), uri);
}

下面是我得到的错误:

/storage/emulated/0/DownloadFileInputSlayer.create)在layer.java:830MediaPhn.mediaplayer.DataSource(MediaPctivity.on)在ctivity.java:48MediaPandroid.app.DataSource(MediaPctivity.perform)在ctivity.java:6662MediaPlayer.setDataSource(MediaPlayer.java:1009)在android.media.MediaPlayer.setDataSource(MediaPlayer.java:967)在sam_stone.mpMediaPlayer.create(MediaPjava.io.)在java.io.MediaPtream.java:146(MediaPandroid.media.)在layer.setMainAlayer.java:1088创建(MainAandroid.media.)在layer.setAlayer.java:1067创建(Aandroid.media.)在android. app. ActivityThread. performLaunchactive(ActivityThread. java: 2599)在android. app. ActivityThread. handleLaunchactive(ActivityThread. java: 2707

共有3个答案

帅锦
2023-03-14

您必须在清单中添加READ_EXTERNAL_STORAGE权限。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

从Marshmallow及以上,您必须向用户请求危险权限。

读取请求运行时权限的文档

欧阳俊明
2023-03-14

首先,您需要将权限添加到AndiodManifest.xml文件

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

那么在你的活动中

public  boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
    if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
            == PackageManager.PERMISSION_GRANTED) {
        Log.v(TAG,"Permission is granted");
        return true;
    } else {

        Log.v(TAG,"Permission is revoked");
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        return false;
    }
}
else { 
    Log.v(TAG,"Permission is granted");
    return true;
}}

然后,权限结果将回调,您可以在其中恢复任务:

@Override
 public void onRequestPermissionsResult(int requestCode, String[] permissions, 
 int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
    Log.v(TAG,"Permission: "+permissions[0]+ " "+grantResults[0]);
}}
袁建木
2023-03-14

在AndroidManifest中添加权限。xml

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

并在android版本5.0以上添加运行时权限

 类似资料:
  • 当我使用MediaPlayer播放mp3文件时,系统会报告错误日志:。但是RealPlayer是正常的。 我发现它的错误只发生在更高的ROM版本。像4.0版本一样,它有错误。在2.3版中,它没有这个错误。 代码: 日志猫错误:

  • 我正在开发一个包含一些音频播放器的RecyclerView的应用程序。应用程序将下载。3gp文件(如果尚未下载)。 当我单击playAudio按钮时,音频未被播放。 这是我的适配器代码: 我怎样才能解决这个问题?

  • 我的项目在Eclipse中可以很好地播放音频文件,但当我打包到JAR文件时,打包在JAR中的音频文件将无法播放。 奇怪的是,JavaFX似乎很好地找到了这个文件。 我这样实例化玩家: 我的调试字符串如下所示: 在eclipse中,它工作正常,并显示文件URL: 从JAR运行时,它会显示JAR URL: 所以它必须定位文件,因为当从JAR运行时,它正确地报告了持续时间,但它不会播放,也不会引发异常。

  • 我正在用JavaFX开发我认为应该是一个简单的任务的media player,它将在用户默认的音乐文件夹路径(使用fedora)中播放存储在本地硬盘驱动器上的mp3文件。我可以很好地从命令行播放所有mp3文件,但当我尝试通过javafx.scene.media库播放时,javafx一直告诉我mp3是一种受支持的媒体类型。我已经下载了我能找到的每一个图书馆,但没有用。下面是一个实际尝试打开文件并播放

  • 我正在用JavaFX开发一个音乐库应用程序,我在如何正确使用MediaPlayer类方面遇到了一些问题。 这是我目前设置和播放音频文件的方法: 比如说,我有两个音频文件。。。 ...以及将这两个文件中的一个发送到上述方法的两个按钮: 通常,两个音频文件都会相互播放是有意义的,因为每次调用该方法时我都会创建一个新的MediaPlayer对象,但是,该对象是静态的。也许我误解了静态对象的工作原理,但这

  • 1.1.1. 多媒体播放 1.1.1. 多媒体播放 我们事实上对上游芯片厂商自带的播放器方式做了调整。 Amlogic 芯片 BaseCode 我们禁用了芯片厂商的原生代码的 libplayer 包,原因是芯片厂商的播放器是直接使用 ALSA 框架来调用音频播放功能的。 这对我们 RokidOS 平台让多个进程使用音频设备造成阻碍。基于这个因素,我们使用了 RokidOS 开发的媒体播放库 lib