如何使用 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();
}
我需要的是从这段代码中得到类似的结果
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();
}