Ищете способ получить только пути к папкам музыкальных файлов из Android MediaStore для введенного пути к каталогу. Так что на самом деле вопрос в том, как сделать правильный запрос к MediaStore.
Вот пример. Мой текущий код:
String dirPath="/mnt/sdcard/Music/";
String selection =MediaStore.Audio.Media.DATA +" like ?";
String[] projection = {MediaStore.Audio.Media.DATA};
String[] selectionArgs={dirPath+"%"};
Cursor cursor = this.managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
selectionArgs,
null);
List songs = new ArrayList();
while(cursor.moveToNext())
songs.add(cursor.getString(0));
В результате мы получим в списке songs
что-то вроде:
/mnt/sdcard/Music/song1.mp3
/mnt/sdcard/Music/song2.mp3
/mnt/sdcard/Music/FolderWithSongs/song3.mp3
/mnt/sdcard/Music/AnotherFolderWithSongs/song4.mp3
/mnt/sdcard/Music/AndOneMoreFolder/song5.mp3
/mnt/sdcard/Music/AndOneMoreFolder/song6.mp3
/mnt/sdcard/Music/AndOneMoreFolder/song7.mp3
/mnt/sdcard/Music/AndOneMoreFolder/SomeFolder/song8.mp3
/mnt/sdcard/Music/AndOneMoreFolder/SomeFolder/song9.mp3
Что я на самом деле ищу -, чтобы получить такой список DISTINCT из вложенных путей одного уровня -из dirPath
, как этот:
/mnt/sdcard/Music/FolderWithSongs/
/mnt/sdcard/Music/AnotherFolderWithSongs/
/mnt/sdcard/Music/AndOneMoreFolder/
Если здесь будут файлы текущей папки-/mnt/sdcard/Music/song1.mp3
и /mnt/sdcard/Music/song2.mp3
— тоже приемлемо.
Любые идеи?
РЕДАКТИРОВАТЬ Я нашел два возможных решения: Android составляет список музыки по папкам и воспроизводит их и Построить древовидную структуру из списка строковых путей , но я думаю, что лучший способ решить эту проблему возможен.