2016-10-09 7 views
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() возвращает ложь, так как я понял, что это пустая. Спасибо за вашу помощь в будущем.

+0

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

ответ

0
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(); 
}