我想通过使用 MediaStore 获取我手机上所有艺术家的名字;我已经有了完整的列表,但由于有多个链接歌曲/艺术家,所有条目都有重复。有什么方法可以使用查询只获取每个查询中的一个,而没有任何重复项?
有我的问题:
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
String[] projection = {
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DURATION
};
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
null,
null);
提前致谢!
最佳答案
对于仍在寻找此问题答案的人,我建议执行以下操作:
String[] mProjection =
{
MediaStore.Audio.Artists._ID,
MediaStore.Audio.Artists.ARTIST,
MediaStore.Audio.Artists.NUMBER_OF_TRACKS,
MediaStore.Audio.Artists.NUMBER_OF_ALBUMS
};
Cursor artistCursor = mContentResolver.query(
MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
mProjection,
null,
null,
MediaStore.Audio.Artists.ARTIST + " ASC");
现在您可以查询此游标以获取所有艺术家的姓名。不会有任何重复。
我知道这不是一般情况下“从 MediaStore 获取唯一值”的解决方案。但它会解决这个非常具体的问题。
解释:
您只需查询正确的表,在本例中是“Artist
”表,而操作查询的是“Media
”表。
希望这对某人有帮助。
关于android - 如何使用 MediaStore 查询来获取没有重复的艺术家?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22190876/