Это не совсем то, что вы хотите делать, я думаю, что вы хотите сделать. Если это так, вы можете получить все альбомы для исполнителя, а не исполнителя альбома, нажав таблицу Media (Media.EXTERNAL_CONTENT_URI ) для отдельного Media.ALBUM с Media.ARTIST_ID в предложении where. Это будет работать в любой версии Android.
Однако ... если вы хотите работать с исполнителями альбомов ...
До 2.3.3 метка MP3 «Исполнитель альбома» игнорировалась и отсутствует в схеме Media Store. Он сейчас там - например, у CyanogenMod - но он еще не задокументирован. Если вы планируете опубликовать свой код, вам нужно либо протестировать его и обойти, если он отсутствует, либо ограничить свой код версиями Android, которые его имеют. В противном случае вы застряли в базе данных исполнителей, которая представляет каждого исполнителя на каждом треке, что, вероятно, не то, что вам нужно, если вы думаете об альбомах.
Вот мой тест в моем коде:
Cursor cur = getContentResolver().query(Albums.EXTERNAL_CONTENT_URI, null, null, null, null);
if ((cur.getColumnIndex("album_artist") == -1) || (cur.getColumnIndex("album_artist_id") == -1))
{
showartist = false;
}
else
{
showartist = true;
}
Вы можете сделать выбор для разных идентификаторов, чтобы получить список исполнителей альбома с чем-то вроде этого:
cur = getContentResolver().query(Albums.EXTERNAL_CONTENT_URI, new String[]{"distinct album_artist_id", "album_artist"}, null, null, "album_artist collate nocase");
Обратите внимание: поскольку столбцы не задокументированы, а константы недоступны, вам придется создавать свои собственные константы или жестко кодировать строки. Вы можете, вероятно, выяснить остальное.