如何从特定艺术家那里获取歌曲?

How to get songs from a particular artist?

我正在尝试从特定艺术家那里获取歌曲,但我不知道该怎么做。艺术家将根据用户输入而改变,因此不应进行硬编码。目前,我正在使用 MediaStore 查询设备中的所有歌曲,但我不知道如何才能让它只从选定的艺术家那里获取歌曲。

这是代码...

public void displayArtistSongs(String artistName) {
    //retrieve song info
    ContentResolver musicResolver = getActivity().getContentResolver();
    Uri musicUri =  MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor musicCursor = musicResolver.query(musicUri, null, artistName, null, null);

    if(musicCursor!=null && musicCursor.moveToFirst()){
        //get columns
        int idColumn = musicCursor.getColumnIndex
                (MediaStore.Audio.Media._ID);
        int titleColumn = musicCursor.getColumnIndex
                (MediaStore.Audio.Media.TITLE);
        //add songs to list
        do {
            long thisId = musicCursor.getLong(idColumn);
            String thisTitle = musicCursor.getString(titleColumn);

            songList.add(new Song(thisId, thisTitle, null, null, null));

        }
        while (musicCursor.moveToNext());
    }
    musicCursor.close();
}

我尝试传递 artistName,以及之前传递 artistId 作为光标中的选择,但它仍然不起作用。任何解决方案?谢谢

要查询所选艺术家的所有歌曲,您可以使用此代码:

String selection = MediaStore.Audio.Media.ARTIST + "=?";
String[] selectionArgs = {artistName};

Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, selection, selectionArgs, null);