Java MediaStore:从播放列表中删除所有识别歌曲

Java MediaStore:从播放列表中删除所有识别歌曲,java,android,android-contentresolver,playlist,mediastore,Java,Android,Android Contentresolver,Playlist,Mediastore,当我在播放列表中有两首具有相同audioID的歌曲,并且我只想删除其中的一首时,我应该如何更改此代码 static public int removeSongFromPlaylist(Context ctx, long playlist_id, long song_id) { ContentResolver resolver = ctx.getContentResolver(); Uri uri = MediaStore.Audio.Playlists.Membe

当我在播放列表中有两首具有相同audioID的歌曲,并且我只想删除其中的一首时,我应该如何更改此代码

static public int removeSongFromPlaylist(Context ctx, long playlist_id, long song_id) {
        ContentResolver resolver = ctx.getContentResolver();
        Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlist_id);

        int res = resolver.delete(uri, MediaStore.Audio.Playlists.Members.AUDIO_ID+" = "+song_id, null);
        reloadPlaylistList(ctx);
        return res;
    }
因为这会删除参数中给定audioID的所有歌曲

我想检查删除了多少首歌,如果超过1首,我就再添加一次。但是这会打乱播放列表的顺序,我认为这不是很有效。

delete(Uri url,String where,String[]selectionArgs)


现在
resolver(uri,where,args)

如果您只有两个副本,则上述操作可以正常运行。如果你有3个或更多呢?。我通过使用lastIndexOf()函数解决了这个问题。我建立了一个包含所有音频id的数组,开始围绕它们循环,并测试lastIndexOf(音频id)。如果结果更大,那么我们有一个副本。在此位置取下音频识别码,然后再次测试。现在,如果lastIndexOf(audio_id)==位置,我们没有更多的重复项,所以我们继续。
Uri uri = ...
String where = "song_id=? LIMIT 1";
String[] args = new String{song_id};