2017-06-22 164 views
0

我想要获取包含音频的所有目录的列表。下面是我使用的代码:MediaStore.Audio检索包含音频的所有目录列表

@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    String[] projection = new String[]{MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME}; 
    String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME + " ASC"; 
    CursorLoader cursorLoader = new CursorLoader(context,MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,projection,null,null,sortOrder); 
    return cursorLoader; 
} 

MediaStore.Audio.Media.DATA给了我所有的文件路径音频文件的列表(用他们的名字附加)。

MediaStore.Audio.Media.Display_Name给我的文件标题。

但是,我想要的是运行一个查询,该查询返回包含音频内容的所有文件夹/目录(它们的路径,名称和计数)的列表。 任何帮助表示赞赏。

回答

0

我能够从设备中检索包含audios的所有文件夹/目录的列表。通过使用下面的代码。

@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    String[] projection = new String[]{"COUNT(" + MediaStore.Files.FileColumns.DATA + ") AS totalFiles", 
      MediaStore.Files.FileColumns.MEDIA_TYPE, 
      MediaStore.Files.FileColumns.PARENT, 
      MediaStore.Files.FileColumns.DATA, 
      MediaStore.Files.FileColumns.DISPLAY_NAME 
      }; 

    String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + " = " + MediaStore.Files.FileColumns.MEDIA_TYPE_AUDIO + 
      " OR "+ MediaStore.Files.FileColumns.MEDIA_TYPE + "=" + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO + 
      ") GROUP BY (" + MediaStore.Files.FileColumns.PARENT; 

    String sortOrder = MediaStore.Files.FileColumns.DISPLAY_NAME + " ASC"; 

    CursorLoader cursorLoader = new CursorLoader(context, MediaStore.Files.getContentUri("external"), projection, selection, null, sortOrder); 
    return cursorLoader; 
} 

这段代码使返回的查询内容提供商具有Media_Typeaudio音的加计所有文件的每个文件夹加上文件夹的路径和名称中的光标。

相关问题