android:mediaplayer.create()返回null

android:mediaplayer.create()返回null,android,android-mediaplayer,Android,Android Mediaplayer,我尝试让用户打开一个音频文件并播放这个文件。但是,MediaPlayer.create()方法返回null。这是我的密码: MediaPlayer mediaPlayer; public void start(View v) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("audio/*"); startActivityForResult(intent,1); } @Ov

我尝试让用户打开一个音频文件并播放这个文件。但是,
MediaPlayer.create()
方法返回
null
。这是我的密码:

MediaPlayer mediaPlayer;

public void start(View v) {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("audio/*");
    startActivityForResult(intent,1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == RESULT_OK) {
        Uri uri = data.getData();
        mediaPlayer = MediaPlayer.create(this,uri);
        //startThread();
        mediaPlayer.start();
    } else {
        mediaPlayer.start();
    }
}
我尝试了mp3文件,我的设备与其他播放器一起播放没有问题。我得到的Uri如下所示content://media/external/audio/media/137650“
我做错了什么?

尝试以下代码:

MediaPlayer mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(getApplicationContext(), uri);
mPlayer.prepare();
mPlayer.start();

这种情况发生在我身上,当错误无法创建媒体时,是文件导致了错误,当我使用.mp3时,文件是.wav错误消失了

create()API如果以某种方式失败,则返回null。本例中的原因是mp3文件损坏。您尝试过不同的文件吗?请确保您具有读取外部存储的权限。如果您的
targetSdkVersion
为23或更高版本,并且您正在安卓6.0或更高版本上进行测试,则需要您请求运行时权限。您还可以检查LogCat是否有任何相关消息,因为
MediaPlayer
倾向于以警告严重性记录内容,而不会抛出异常。另外,不要在
else
块中调用
mediaPlayer.start()
,因为您尚未初始化
mediaPlayer
。是的,正如我所说,其他播放器可以播放这些文件。他们绝对没有腐败现在觉得自己很愚蠢,我肯定得到了允许。。。感谢这与问题有什么关系(OP没有这个错误-他们得到了一个
null
!)
mediaPlayer=mediaPlayer.create(这个,uri)此行生成错误,因为在本例中是从uri获取的文件格式。因此,在这一行之后,如果执行
mediaPlayer.start()
操作,将生成空异常。。。所以我的意思是文件格式是这个异常背后的核心问题,至少在我的案例中,这个部分是为了给OP的问题添加一个答案,而不是为了描述代码的问题以及如何修复它!