Подтвердить что ты не робот

Android -.nomedia не работает для изображений

У меня есть изображения, которые считываются с SD-карты только конкретным приложением, поэтому я хочу скрыть его из галереи изображений. Я поместил в него файл .nomedia, но этот файл игнорируется, изображения все еще отображаются в Галерее. Я положил его с помощью "." в начале. Все еще не работает. Любые идеи?

4b9b3361

Ответ 1

Я предполагаю, что вы используете Android 4.0, так как .nomedia функционирует должным образом до тех пор. Отчет об ошибке AOSP объясняет:

MediaScanner на Android 4.0 не удается забыть уже проиндексированные файлы, когда он встречает файл .nomedia, но он чтит его, если он присутствует на первом проходе. Поэтому обходным путем является просто переименование каталога. Конечно, вы можете изменить имя после следующего сканирования, если хотите.

Обновление. Я полагаю, что полное решение было бы на самом деле принудительным сканирование носителей после переименования каталога. Я не пробовал, но что-то вроде этого должно сделать трюк:

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

Ответ 2

Хорошо... Я признаю, что я только догадываюсь, но поскольку в комментарии есть +1, я дам ему вихрь в качестве ответа. Поскольку это ваше собственное приложение, измените расширение файла изображения на что-то совершенно уникальное ".myimagefile", например, и посмотрите, скрывает ли это его от Android. Тем временем вы знаете, какие файлы загружать в свое приложение и как их сохранять.

Ответ 3

Ошибка .nomedia верна, и вы можете добавить ее в ранее существующую папку с изображениями.

Вы можете заставить галерею повторно проиндексировать после создания файла .nomedia, переименовав папку, запустив галерею (теперь должна исчезнуть "скрытая папка" ) и переименуйте папку обратно в нужное вам место. скрытый.

Я просто сделал это снова, чтобы убедиться, что он работает на моем телефоне. Android 4.0.4.

Ответ 4

Здесь я нашел себя:

http://www.transformerforums.com/forum/asus-transformer-faq/17765-solved-nomedia-doesnt-work-under-honeycomb-ics.html

Однако небольшое изменение этого метода:

  • Загрузите и установите SDRescan приложение
  • Очистить данные для приложения Галерея
  • Очистить данные для приложения Media Storage
  • Откройте приложение SDRescan, загруженное с шага 1

SDCard следует повторно отсканировать, и все каталоги, содержащие файлы .nomedia, должны быть проигнорированы на этом этапе.

Ответ 5

Файл .nomedia является превентивным, а не целебным (в Android 4.0), и это ошибка. Если у вас есть файл .nomedia, и изображения уже находятся в нем, Галерея все равно будет искать изображения.

Вам нужно создать файл .nomedia, прежде чем вставлять в него изображения.

Изменить: все папки, начинающиеся с точки, не сканируются (потому что скрыты).

Ответ 6

На моей карте памяти у меня есть тысячи фотографий, которые подавляют медиа-сканер. Затем в корневой папке на моей карте памяти, переименованной из "RootFolder" в ".RootFolder"

Стал скрытым каталогом и не использовал больше .nomedia

Попробуйте это.

Ответ 7

В Media Storage 4.1.1 на моем Samsung Galaxy Note 2 ни один из приведенных выше трюков не работает полностью, в этом смысле: каталоги, содержащие файлы .nomedia, все еще сканируются, что может сильно разрядить батарею (хотя результат игнорируется в галерее), а также каталоги с именами, начинающимися с символа '.' все еще сканируются:-( Я прибегал к использованию приложения "Media Scanner Root", которое позволяет полностью отключить скрупулезный медиа-сканер. По-видимому, это достигается чем-то вроде

pm disable com.android.providers.media/com.android.providers.media.MediaScannerReceiver

Кстати, отключение/замораживание самого приложения Media Storage плохо влияет на то, что выбор и привязка мелодий и уведомлений больше не работает (какой прекрасный дизайн), но когда отключается только его компонент сканера, все равно можно использовать, например, ES File Explorer для выбора тонов.

Ответ 8

Вы можете использовать библиотеку расширения расширения APK (требуется уровень API 5 или выше) для чтения файлов, которые вы установили на SD-карту, как часть архива Zip. Описание этой библиотеки можно найти здесь:

http://developer.android.com/guide/market/expansion-files.html#ZipLib

Предположительно, файлы, хранящиеся в ZIP-архиве на вашей SD-карте, не будут отображаться в Галерее.

Кроме того, если у вас есть изображения, которые ваше приложение читает (но не записывает) на SD-карту, и это должно быть доступно только вашему собственному приложению, и это может быть доставлено, когда ваше приложение установлено или обновлено, то имеет смысл воспользоваться новым средством Google Play, чтобы включить их в состав вашего приложения, когда оно установлено.

Я предполагаю, что вы сохраняете свои изображения на SD-карте, потому что они слишком велики, чтобы вписаться в ваш APK файл (учитывая его ограничение на 50 МБ, которое даже меньше, чем на практике для определенных устройств, из-за буферизации вопросы).

Если это так, то вы можете подумать, что Google Play с 3/5/2012 поддерживает вложение (к вашему приложению) до двух "файлов расширения" объемом до 2 гигабайт каждый. APK по-прежнему имеет максимум 50 МБ, но файлы расширения увеличивают общее хранилище до 4 ГБ. Эти файлы расширений предоставляются вам Google, и они поддерживаются в определенной папке SD-карты, специфичной для вашего приложения, и могут быть доступны с помощью API, предоставляемого библиотекой Downloader (требуется уровень API 5 или выше).

Вот объявление Google об этом изменении:

http://android-developers.blogspot.in/2012/03/android-apps-break-50mb-barrier.html

И вот подробное описание объекта:

http://developer.android.com/guide/market/expansion-files.html

Обратите внимание, что, хотя этот объект является новым, библиотеки поставляются с Android SDK для использования с более ранними уровнями API. Например, при моей установке я нахожу здесь версии API-8:

<Android SDK base folder>\extras\google\play_apk_expansion\

В эту же папку входит упомянутая выше Zip-библиотека расширения APK в подпапке zip_file.

Я лично не использовал это средство самостоятельно, и поэтому описываю это, основываясь исключительно на цитируемых ссылках.

Ответ 9

Галерея не обновляется так часто, и некоторые миниатюры все еще отображаются в представлении. Для этого вам нужно перезагрузить телефон или программно обновить галерею, выполнив следующий код.

    /**
 * This method is must to reflect changes on gallery, if some file is
 * deleted or moved, <b> no updation is shown on gallery till phone is
 * rebooted </b> or <i>till this method UpdateGallery(Activity activity) is
 * called</i> UpdateGallery
 */
public static void UpdateGallery(Activity activity) {
    activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri
            .parse("file://" + Environment.getExternalStorageDirectory())));
}