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); 

Edit: Исправленной audio_playlist_map к audio_playlists_map

+0

Спасибо! Где найти таблицу audio_playlist_map? – Imon

+0

Ошибка получения --- 05-22 18: 36: 37.161: E/DatabaseUtils (513): android.database.sqlite.SQLiteException: нет такой таблицы: audio_playlist_map: при компиляции: SELECT _id, title, _data, _display_name, album , artist, composer, year, album_id, _size FROM audio WHERE (_ID NOT IN (SELECT audio_id FROM audio_playlist_map WHERE playlist_id =?) AND is_music! = 0) ORDER BY title COLLATE NOCASE ASC – Imon

+0

О, да, это, вероятно, называется 'audio_playlists_map 'на самом деле. Пропустил 's'. Это то, что происходит, когда вы пишете SQL из памяти. – Jens