【问题标题】:Query MediaStore Cursor using specific folder使用特定文件夹查询 MediaStore 游标
【发布时间】:2021-12-28 22:56:04
【问题描述】:

我使用光标为基于媒体的 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);

但是,在我的艺术家列表视图中,无法检查 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 列,这在常规媒体 URI 中不可用。

【问题讨论】:

    标签: android android-cursor


    【解决方案1】:

    您可以将任何您想要的东西塞进您的选择中,例如这个子选择 - 这应该可以解决您的问题:

    // 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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多