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

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

Solutions Collecting From Web of "Android – .nomedia не работает для изображений"

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

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

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

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

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

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

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

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

Вот что я нашел:

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

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

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

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

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

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

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

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

  Pm отключить com.android.providers.media/com.android.providers.media.MediaScannerReceiver 

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

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

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

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

Вы можете использовать библиотеку расширения APK Expansion Zip Library (требуется уровень 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.

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

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

  /** * 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()))); }