проблема с управляемым запросом

1

Я пытаюсь написать приложение, в котором перечислены все 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 неверна? Спасибо!

Теги:
cursor
mediastore

1 ответ

3

Ваш код верен. Путь/внешний/аудио/носитель - это путь поставщика контента, а не путь к фактической файловой системе. У вас есть файлы MP3 на карте? Проверьте музыкальное приложение, которое вы можете увидеть. Если вы не можете там, я иногда нахожу (особенно на эмуляторе), что индексирование не всегда выполняется. Настройте SD для повторной передачи всех носителей путем размонтирования SD-карты и повторной установки (Настройки/SD-карта и память телефона/Отмена SD-карты).

  • 0
    Спасибо, Ник! Перемонтирование помогло! Теперь все работает правильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню