Пустой курсор из MediaStore - PullRequest
       1

Пустой курсор из MediaStore

3 голосов
/ 11 февраля 2011

Я не могу понять, почему этот курсор пуст в этом конкретном устройстве. но работает на всех других устройствах Android. На SDCard имеется несколько аудиофайлов, и стандартный медиаплеер может найти и воспроизвести эти песни без проблем.

Cursor c = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[] { "distinct " + MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM_KEY, MediaStore.Audio.Media.ALBUM_ID}, 
                null,
                null, 
                MediaStore.Audio.Media.ARTIST);

И проигрыватель книг (я полагаю, они просто перебирают папки и выполняют собственный анализ id3), и стандартный музыкальный проигрыватель Android находит музыку, но я ничего не могу получить из медиастора Файлы ".nomedia" отсутствуют, я попытался вставить новые файлы mp3 в новую папку.

Ответы [ 2 ]

4 голосов
/ 10 апреля 2011

У меня такая же проблема на HTC Incredible, и, к сожалению, ответ DJC не сработал для меня. И EXTERNAL_CONTENT_URI, и INTERNAL_CONTENT_URI не предоставили мне никаких изображений. После некоторых копаний я обнаружил, что с помощью следующего URI контента он, похоже, работает на HTC Incredible.

Uri contenturi = Images.Media.getContentUri("phoneStorage");
2 голосов
/ 11 февраля 2011

Я сталкивался с подобным и обнаружил несколько ответов, ни один из которых еще не оказался удовлетворительным.

Сканер мультимедиа запускается в ответ на системную трансляцию Intent ACTION_MEDIA_MOUNTED, которая происходит во время загрузки.Итак, первое, что нужно проверить, это перезагрузить компьютер.

Насколько я понимаю, сканер также будет работать после «Настройки»> «Управление приложениями»> «Хранилище носителей»> «Очистить данные» и повторно заполнит хранилище медиаданных из хранилища.Я попробовал это, и это сработало без эффекта. Конечно, я не могу гарантировать безопасность и не буду делать это на устройствах не-dev.

Вы также можете вручную

mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse
        ("file://" + Environment.getExternalStorageDirectory()))); 

и выставьте какое-то уведомление во время просмотра трансляции намерений ACTION_MEDIA_SCANNER_FINISHED.

Если вы сами импортируете мультимедиа, проверьте MediaScannerConnection , чтобы запустить сканер.

О, и если вы планируете переходить на такие устройства, как Google Nexus, вам придется иметь дело с INTERNAL_CONTENT_URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...