android - 如何使用 MediaStore 查询来获取没有重复的艺术家?

标签 android mediastore

我想通过使用 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/

相关文章:

android - 检查特定 LazyColumn 项目何时出现的有效方法?

android - 我如何获得最小值成功?

android - 如何将音频文件从原始文件夹保存到手机

android - 从 SD 卡文件设置铃声通知

android - React-Native Android ScrollView 无法从 onScroll 获取事件

android - 当我用高清png图像替换低质量png图像时,在android中生成失败错误

java - SQLiteDatabase .execSQL 期间的 Android java.lang.NullPointerException

java - 如何设置 MEDIASTORE 以从 android 上的特定文件夹获取图像

android - MediaStore.Images.Media.insertImage 已弃用

java - 为什么查询 Androids MediaStore 返回空光标?