与MediaStore相关的Android 10中的更改现在似乎需要不同的代码来>=10和<=9版本。一年来一直在做其他事情,我回来更新应用程序并遇到困难。我的特别问题是我下载了一个音乐文件(所有类型(,将其与其专辑封面一起存储到内部共享存储目录(Android/media/com.myapp/mydir(中。然后,我使用内容解析器将其添加到媒体存储中,并取回 Uri。然后我会使用 MediaPlayer.playFromUri(( 播放它。
这在Android <=9上仍然有效,但在10 MediaPlayer.playFromUri((上会抛出IO异常。文件在那里,Uri在添加到媒体存储时返回。我在这里读过几篇文章,试图拼凑解决方案,但只是无法完全弄清楚。
添加到媒体商店的提炼代码是...
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();
}
任何帮助非常感谢。
Relative_path:DCIM/MyFolder
或Pictures/MyFiles
。
数据到full path of file
. –