0
Что мне нужно, чтобы получить результат, как от этого кодаКак получить список всей музыки в определенном каталоге и всех его подкаталогах с помощью 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()
возвращает ложь, так как я понял, что это пустая. Спасибо за вашу помощь в будущем.
Вы запрашиваете Media.DATA как «какой-то путь ....», но MediaStore.Audio.Media.DATA содержит полный путь, включая дорожку и ее расширение, поэтому условие никогда не будет истинным , Что вам нужно сделать, так это использовать оператор LIKE. Приложите свой путь следующим образом: searchpath = "%" + strpath + "%"; // ищет строку пути и MediaStore.Audio.Media.DATA + "LIKE?". Теперь запрос будет искать вашу строку пути, содержащуюся в полном пути. – Theo