Android 10 / Q,MediaStore和MediaPlayer.playFromUri

问题描述 投票:0回答:1

Android 10中与MediaStore相关的更改似乎现在对于> = 10和<= 9版本需要使用不同的代码。做了一年其他事情,我回来了,更新了应用程序,遇到了困难。我的特殊问题是我下载了所有类型的音乐文件,并将其连同专辑封面一起存储到内部共享存储目录(Android / media / com.myapp / mydir)中。然后,我使用ContentResolver将其添加到MediaStore并重新获得Uri。然后,我将使用MediaPlayer.playFromUri()播放它。

这在Android <= 9上仍然可以正常工作,但在10 MediaPlayer.playFromUri()上会抛出IO异常。文件在那里,将Uri添加到MediaStore后返回。我在这里读过几篇文章,试图拼凑出解决方案,但还不太清楚。

添加到MediaStore的简化代码是...

        ContentResolver cr = getContext().getContentResolver();
        ContentValues vtrack = new ContentValues();

        vtrack.put(MediaStore.MediaColumns.TITLE, t.getTitle());
        vtrack.put(MediaStore.MediaColumns.DATA, audiopath);
        vtrack.put(MediaStore.Audio.AudioColumns.ARTIST, t.getArtist());
        vtrack.put(MediaStore.Audio.AudioColumns.ALBUM, t.getAlbum());
        vtrack.put(MediaStore.Audio.AudioColumns.IS_MUSIC, 1);

        Uri u;
        try {
            u = cr.insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, vtrack);
        }
        catch (Exception e) {
            e.getMessage();
        }

非常感谢任何帮助。

android android-mediaplayer mediastore android-10.0
1个回答
0
投票

相对路径:DCIM/MyFolderPictures/MyFiles

[DATA至full path of file。 –

© www.soinside.com 2019 - 2024. All rights reserved.