如何使用 MediaStore 获取特定目录和所有子目录中的所有音乐列表

How to get list of all music in specific directory and all subdirectories using MediaStore

我需要的是从这段代码中得到类似的结果

ContentResolver musicResolver = getActivity().getContentResolver();
    Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);

但在特定目录中,而不是在所有目录中。 这是我到目前为止尝试过的:

ContentResolver musicResolver = mContext.getContentResolver();
    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor musicCursor = null;
    try {
        musicCursor = musicResolver.query(uri,
                new String[]{
                        MediaStore.Audio.Media._ID,
                        MediaStore.Audio.Media.ARTIST,
                        MediaStore.Audio.Media.TITLE,
                        MediaStore.Audio.Media.DURATION,
                },
                MediaStore.Audio.Media.DATA + "=? ",
                new String[]{new File("some path to directory").getCanonicalPath()},
                null);
    } catch (IOException e) {
        e.printStackTrace();
    }

但是这个方法moveToFirst() returns false 据我所知它是空的。 感谢您以后的帮助。

   searchpath = "%" + yourpath + "%";// looking for path string
   ContentResolver musicResolver = mContext.getContentResolver();
  Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
  Cursor musicCursor = null;
  try {
    musicCursor = musicResolver.query(uri,
            new String[]{
                    MediaStore.Audio.Media._ID,
                    MediaStore.Audio.Media.ARTIST,
                    MediaStore.Audio.Media.TITLE,
                    MediaStore.Audio.Media.DURATION,
            },
            MediaStore.Audio.Media.DATA + "LIKE? ",
            new String[]{searchpath},
            null);
} catch (IOException e) {
    e.printStackTrace();
}