2011-11-01 70 views
10

我使用遊標返回基於媒體的Listview的項目。我只想返回特定文件夾中的項目。使用特定文件夾查詢MediaStore光標

這適用於我的歌曲列表,因爲這光標是基於關閉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); 

然而,在我的列表視圖的藝術家的數據結果是不可對證:

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中不可用。

回答

4

你可以將任何你想成爲您的選擇,像這樣子例如選擇 - 這應該解決您的問題:

// 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"); 
相關問題