Как избавиться от дубликата альбома из MediaStore без использования GROUP BY (Android Q api 29) - PullRequest
0 голосов
/ 01 апреля 2020

До Android 10 я использовал этот фильтр в своем запросе, чтобы избавиться от дубликатов альбомов.

String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0 ) GROUP BY (" + MediaStore.Audio.Media.ALBUM;

Но с Android 10 api 29 я получаю сообщение об ошибке, когда использую GROUP BY

В этой публикации я обнаружил, что она больше не работает с использованием SQL операторов в запросе, но в этом ответе они используют Hashmap , который я не хочу использовать, потому что мне нужно получать значения по позициям, которые я получаю из RecyclerView , и поэтому я Я использую ArrayList .

Теперь я получаю такие значения: myArrayList.get(position).getAlbum();, но не уверен, как я могу добиться того же с Hashmap .

Как можно избавиться от этих дубликатов без оператора GROUP BY ?

Мой код

String[] projection2 = { MediaStore.Audio.Media.ALBUM_ID,
                MediaStore.Audio.Media.ALBUM,
                MediaStore.Audio.Media.IS_MUSIC};

String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";

String sort = MediaStore.Audio.Media.ALBUM + " COLLATE NOCASE ASC";

cursor = resolver.query(musicUri, projection2, selection, null, sort);

try {
      if (cursor != null) {
          cursor.moveToFirst();
          while (!cursor.isAfterLast()) {
                Album album = new Album(cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID)),
                cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM)));

                albums.add(album);
                cursor.moveToNext();
                }
                Log.d(TAG,"albums size: " + albums.size());
            }
    }catch (Exception e){
     Log.e(TAG, "Exception caught when creating ALBUM!", e);
     throw new Exception();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...