Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MediaStore.Audio检索包含音频的所有目录的列表_Android_Audio_Android Contentprovider_Mediastore - Fatal编程技术网

Android MediaStore.Audio检索包含音频的所有目录的列表

Android MediaStore.Audio检索包含音频的所有目录的列表,android,audio,android-contentprovider,mediastore,Android,Audio,Android Contentprovider,Mediastore,我正在尝试获取包含音频的所有目录的列表。以下是我正在使用的代码: @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { String[] projection = new String[]{MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME}; String sortOrder = MediaS

我正在尝试获取包含音频的所有目录的列表。以下是我正在使用的代码:

@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;
}
@覆盖
公共加载器onCreateLoader(int-id,Bundle-args){
字符串[]投影=新字符串[]{MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME};
字符串sortOrder=MediaStore.Audio.Media.DISPLAY_NAME+“ASC”;
CursorLoader CursorLoader=新的CursorLoader(上下文,MediaStore.Audio.Media.EXTERNAL\u CONTENT\u URI,projection,null,null,sortOrder);
返回游标装入器;
}
MediaStore.Audio.Media.DATA
提供了所有音频文件的列表及其文件路径(附加名称)

MediaStore.Audio.Media.Display\u Name
提供文件的标题

但是,我希望运行一个查询,返回包含音频内容的所有文件夹/目录(路径、名称和音频计数)的列表。
非常感谢您的帮助。

我能够从设备中检索到包含
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;
}
@覆盖
公共加载器onCreateLoader(int-id,Bundle-args){
String[]projection=新字符串[]{“计数(“+MediaStore.Files.FileColumns.DATA+”)为totalFiles”,
MediaStore.Files.FileColumns.MEDIA\u类型,
MediaStore.Files.FileColumns.PARENT,
MediaStore.Files.FileColumns.DATA,
MediaStore.Files.FileColumns.DISPLAY\u名称
};
字符串选择=MediaStore.Files.FileColumns.MEDIA\u类型+“=”+MediaStore.Files.FileColumns.MEDIA\u类型\u音频+
或“+MediaStore.Files.FileColumns.MEDIA_TYPE+”=“+MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO”+
“”)分组依据(“+MediaStore.Files.FileColumns.PARENT;
字符串sortOrder=MediaStore.Files.FileColumns.DISPLAY_NAME+“ASC”;
CursorLoader CursorLoader=新的CursorLoader(上下文,MediaStore.Files.getContentUri(“外部”),投影,选择,空,排序器);
返回游标装入器;
}
这段代码生成并返回一个游标,用于查询内容提供商,其中所有文件的媒体类型为
Media\u Type
as
audio
加上每个文件夹中的音频计数,以及文件夹的路径和名称