Я пытаюсь написать приложение, в котором перечислены все mp3-файлы с SD-карты.
String[] columns = new String[] {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.TITLE_KEY,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ARTIST_ID,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.TRACK
};
String uristr_t = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI.getPath();
Cursor musicCursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
columns, null, null, null);
if(musicCursor != null){
mSongs = new ArrayList<SongInfo>( musicCursor.getCount());
boolean isMediaFilesExist = musicCursor.moveToFirst();
...
На SD-карте есть несколько mp3-файлов, но musicCursor.GetCount () возвращает 0. Я полагаю, что путь неверный. EXTERNAL_CONTENT_URI равен content://media/external/audio/media
, а его путь:
/external/audio/media
но путь моей SD-карты:
/mnt/sdcard
И я попытался установить Uri вручную:
String uriStr = "content://" + Environment.getExternalStorageDirectory().getPath();
Uri sdCardUri = Uri.parse(uriStr);
Cursor musicCursor = managedQuery(sdCardUri, columns, null, null, null);
В этом случае Uri равен content:///mnt/sdcard
, но musicCursor имеет значение null после managedQuery. Может быть, формат uriStr неверен, а инициализация Uri неверна?
Спасибо!