Scoped Storage & MediaStore & Api 30:可以从播放列表中删除曲目,但不能添加

问题描述

我有一个适用于 Android 的音乐播放器应用。 MediaStore 有一个奇怪的问题。我可以在 MediaStore 上删除添加歌曲到我自己的播放列表(例如,由我的应用程序创建)。但是,当我尝试将歌曲添加到由其他应用程序创建的播放列表时,它会抛出 java.lang.SecurityException,但我可以从完全相同的播放列表中删除歌曲!

我拥有所有必需的权限:

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

还有我的代码

public Uri addTrackToPlaylist(Context context,TrackLocal trackLocal,long playlist_id,int pos) {
    ContentResolver resolver = context.getContentResolver();
    Uri newuri = MediaStore.Audio.Playlists.Members.getContentUri(getVolume(),playlist_id);
    ContentValues values = new ContentValues();
    values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER,0);
    values.put(MediaStore.Audio.Playlists.Members.AUdio_ID,trackLocal.dbid);
    Uri uri = resolver.insert(newuri,values);
    return uri;
}

public int deletePlaylistTrack(Context context,long playlistId,TrackLocal trackLocal) {
    ContentResolver resolver = context.getContentResolver();
    Uri uri = MediaStore.Audio.Playlists.Members.getContentUri(getVolume(),playlistId);
    String filter = MediaStore.Audio.Playlists.Members.AUdio_ID + " = " + trackLocal.dbid;
    return resolver.delete(uri,filter,null);
}

private String getVolume() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        return MediaStore.VOLUME_EXTERNAL;
    } else {
        return "external";
    }
}

有没有人至少知道如何解决这个问题?

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)