使用特定文件夹查询MediaStore光标

我使用游标来返回基于媒体的Listview的项目。 我只想返回特定文件夹中的项目。

这适用于我的歌曲列表,因为这个光标基于MediaStore.Audio.Media.DATA,我可以检查这个光标所在的文件夹:

final String folder = "'" + (new MyPrefs(this.PREF_PATH)).getString("music_folder",null) + "%'"; audioCursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, mCursorCols, MediaStore.Audio.Media.DATA + " LIKE " + folder, null,MediaColumns.TITLE + " COLLATE LOCALIZED ASC"); startManagingCursor(audioCursor); 

但是,在我的艺术家Listview中,DATA结果不可用于检查:

 audioCursor = getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI, cols, null, null,AudioColumns.ARTIST + " COLLATE LOCALIZED ASC"); startManagingCursor(audioCursor); 

任何人都可以请与我分享一个很好的方法来查询MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,只返回我的具体文件夹? 我需要使用Artist URI,因为我使用的NUMBER_OF_TRACKS列在常规Media URI中不可用。

Solutions Collecting From Web of "使用特定文件夹查询MediaStore光标"

你可以把你想要的任何东西塞进你的select,比如这个子select – 这应该解决你的问题:

 // The folder needs to end with the % wildcard or stuff doesn't work properly. String folder = "/mnt/sdcard/Music/Some Folder/"; folder = folder + "%"; String where = Artists._ID + " IN (SELECT " + Media.ARTIST_ID + " FROM audio WHERE " + Media.DATA + " LIKE ?)"; String[] whereArgs = new String[]{folder}; audioCursor = getContentResolver().query(MediaStore.Audio.Artist.EXTERNAL_CONTENT_URI, cols, where, whereArgs, AudioColumns.ARTIST + " COLLATE LOCALIZED ASC");