java - Mediaplayer 未打开选定的文件 android(setDataSource 失败。: status=0x80000000)

标签 java android android-mediaplayer

所以我设置了以下代码来从内存中选择一首歌曲并播放它。

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
                            startActivityForResult(intent, 10);

我的onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if(resultCode == RESULT_OK){
        Uri uriSound = data.getData();

        play(this, uriSound);
    }
}

最后是我的玩法: 私有(private)无效播放(上下文上下文,Uri uri){

    MediaPlayer mip = new MediaPlayer();
    try {

        mip.setDataSource(context, uri);
        mip.prepare();
        mip.start();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

但是当我运行这个时,我不断收到以下错误:

java.io.IOException: setDataSource failed.: status=0x80000000

我在任何地方都找不到可行的解决方案。 有什么想法吗?

最佳答案

在 list 文件中授予读取外部存储的权限修复了这个问题!

关于java - Mediaplayer 未打开选定的文件 android(setDataSource 失败。: status=0x80000000),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43155378/

相关文章:

Java - 字节的模加法

Java 读取包含来自不同语言的字符串的文件

java - 如何通过 Intent 从 Activity 向服务发送数据 - 空指针问题

android - 在 Android 11 (R) 上获取专辑封面

android - 在 Http Live Streaming Android 3.0+ 中获取当前日期

java - 如果客户端在 keystore 中有多个证书,将选择哪个 SSL 证书

java - 从继承的 protected Java 字段创建公共(public)访问器

android - 在 Android 中使用 geo 的具有多个经纬度的默认谷歌地图

android - 为什么 AssetManger.list() 这么慢?

android - 如何使用Android MediaPlayer在毫秒范围内播放mp3文件?