Пустой курсор из Медиастора


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

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 находят музыку, но я ничего не могу получить из mediastore. Нет ".файлы nomedia " присутствуют, я пробовали вставлять новые mp3 файлы в новую папку.

2 3

2 ответа:

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

Медиа-сканер запускается в ответ на запуск системы широковещательного намерения ACTION_MEDIA_MOUNTED, что и происходит во время загрузки. Так что первое, что нужно проверить-это перезагрузка.

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

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

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

И повесил какое-то уведомление, наблюдая за трансляцией intent ACTION_MEDIA_SCANNER_FINISHED.

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

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

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

Uri contenturi = Images.Media.getContentUri("phoneStorage");