0

我想要使用CursorLoader獲取不在給定播放列表中的所有音樂。可能嗎?在Android中找到所有不在播放列表中的音樂

我們可以使用下面的代碼

loader = new CursorLoader(context, MediaStore.Audio.Playlists.Members 
       .getContentUri("external", playlistID), proj, 
       MediaStore.Audio.Media.IS_MUSIC + " != 0 ", null, ORDER_BY); 

獲取列表中的所有音樂,但我需要做的相反,後者是讓所有不在給定播放列表中的音樂。我怎樣才能做到這一點?

+0

我認爲有些事情應該工作作爲selectionArgs兩個 – Imon

+0

是否有從另一個光標減去光標的內容的方式?像allSongsCursor - singlePlaylistCursor ..... – Imon

回答

1

我無法幫助您修復您的LowAcceptRateException - 這是一個關鍵故障,可能會干擾長期回答的問題 - 但如果您不介意做難以維護和濫用內部功能的內容在MediaProvider中,您可以這樣做,以便在(特定)播放列表中獲取而不是的歌曲。

loader = new CursorLoader(context, Audio.Media.EXTERNAL_CONTENT_URI, proj, 
      Media._ID + " NOT IN (SELECT audio_id FROM audio_playlists_map WHERE playlist_id=?) AND " + 
      MediaStore.Audio.Media.IS_MUSIC + " != 0 ", 
      new String[]{String.valueOf(playlistID}, ORDER_BY); 

編輯:更正audio_playlist_mapaudio_playlists_map

+0

謝謝!我在哪裏可以找到audio_playlist_map表? – Imon

+0

接收錯誤--- 05-22 18:36:37.161:E/DatabaseUtils(513):android.database.sqlite.SQLiteException:no such table:audio_playlist_map:,編譯時:SELECT _id,title,_data,_display_name,album ,藝術家,作曲家,年份,album_id,_size從音頻WHERE(_id NOT IN(SELECT audio_id FROM audio_playlist_map WHERE playlist_id =?)AND is_music!= 0)ORDER BY標題COLLATE NOCASE ASC – Imon

+0

哦,是的,可能是'audio_playlists_map 「其實。錯過了's'。當你從內存中寫入SQL時會發生這種情況。 – Jens

相關問題