Android - .nomedia no funciona para imágenes

Tengo imágenes, que se leen desde la tarjeta sd solo por una aplicación en particular, así que quiero ocultarlas de la galería de imágenes. He puesto el archivo .nomedia en él, pero este archivo se ignora, las imágenes aún se muestran en la Galería. Lo he puesto con "." al principio. Sigue sin funcionar. ¿Algunas ideas?

preguntado el 22 de mayo de 12 a las 08:05

No sé si esto realmente funcionaría (ya que no sé si Android busca en los datos o solo en la extensión del archivo), pero ¿ha intentado cambiar la extensión del archivo a algo que sea completamente suyo? Como sabe cuáles son los archivos, puede cargarlos usted mismo, pero ¿Android podría pasarlos por alto? -

@Dr.Dredel +1, solo quitar la extensión debería ser bueno. -

¿Puede publicar su código para crear el archivo .nomedia para que podamos verificar que sea correcto? De lo contrario, usar la recomendación del Dr. Dredel debería funcionar. De lo contrario, diría que mires esta otra respuesta. stackoverflow.com/questions/2733576/android-file-creation-fails y asegúrese de tener el permiso correcto. -

¿En qué dispositivo estás probando esto? No he tenido problemas con el archivo .nomedia antes. ¿Estás seguro de que el archivo tiene el nombre correcto? ¿Cómo estás agregando este archivo? -

9 Respuestas

Supongo que estás usando Android 4.0, como .nomedia funcionado correctamente hasta entonces. El AOSP informe de error para el problema explica:

MediaScanner en Android 4.0 no olvida los archivos ya indexados cuando encuentra un .nomedia archivo, pero lo respeta si está presente en el primer paso. Entonces, la solución es simplemente cambiar el nombre del directorio. Por supuesto, puede volver a cambiar el nombre después del próximo escaneo, si lo desea.

Noticias: Supongo que la solución completa sería forzar un escaneo de medios después de cambiar el nombre del directorio. No lo he probado, pero algo como esto debería hacer el truco:

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

Respondido el 08 de junio de 12 a las 22:06

Tenga en cuenta que reiniciar el teléfono también reindexa las imágenes [probado en Andro 4.1.2] - Desarrollador Grzegorz

@GrzegorzDev ¿cómo verificar después de reiniciar? no funciona con ".nomedia" - Ando Masahashi

solucionó mi problema. - s nash

Tenga en cuenta que la transmisión "Intent.ACTION_MEDIA_MOUNTED" no funciona en Android 4.4+. - Virar

Bueno... Admito que solo estoy adivinando, pero dado que obtuvo un +1 en el comentario, le daré un giro como respuesta. Dado que esta es su propia aplicación, cambie la extensión del archivo de imagen a algo totalmente único ".myimagefile", por ejemplo, y vea si eso lo oculta de Android. Mientras tanto, sabe qué archivos cargar en su propia aplicación y cómo guardarlos.

Respondido el 01 de junio de 12 a las 07:06

MediaScanner usa extensiones de archivo para determinar el tipo de archivo, por lo que cambiar el nombre de cada archivo funcionaría, pero simplemente cambie el nombre del directorio (después de agregar .nomedia) es mucho más simple. - Darshan Rivka Whittle

como dije, solo estaba siguiendo lo que el OP describió como su problema y adivinando cuál podría ser una posible solución. Parece que .nomedia no es una solución perfecta, siguiendo la otra respuesta, pero puedo ver cómo hacer un esquema de cambio de nombre de archivo puede ser más complicado. - Yevgeny Simkin

El error .nomedia es correcto y PUEDE agregarlo a una carpeta de imágenes preexistente.

Puede obligar a la galería a volver a indexarse ​​después de crear el archivo .nomedia cambiando el nombre de la carpeta, ejecutando la galería (ahora debería faltar la "carpeta oculta") y renombrando la carpeta como desee. Debería permanecer oculta.

Lo hice de nuevo para asegurarme de que funciona en mi teléfono. Android 4.0.4.

respondido 02 nov., 12:18

Aquí hay algo que encontré:

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

Sin embargo, una pequeña alteración a ese método:

  1. Descargue e instale SDVolver a escanear applicación
  2. Borrar datos para la aplicación Gallery
  3. Borrar datos para la aplicación Media Storage
  4. Abra la aplicación SDRescan descargada del paso 1

SDCard debe volver a escanearse y todos los directorios que contienen archivos .nomedia deben ignorarse en este punto.

Respondido 17 Jul 12, 20:07

Esto es lo que funcionó para mí. Es simple. En mi caso, no pude haber cambiado el nombre de la carpeta porque eran las imágenes de Whatsapp y los videos de Whatsapp, otras carpetas de medios de Whatsapp, que no quería que aparecieran en la Galería. Cambiar el nombre de la carpeta probablemente haría que la aplicación WhatsApp también perdiera los datos. Por eso, este método es el mejor y el más seguro. - finitud

En mi tarjeta de memoria tengo miles de fotos que abruman al escáner multimedia. Luego, en la carpeta raíz de mi tarjeta de memoria, renombrada de "RootFolder" a ".RootFolder"

Se convirtió en el directorio oculto y no uso más .nomedia

Prueba con esto.

Respondido 28 Feb 15, 15:02

La .nomedia El archivo es preventivo, no curativo (en Android 4.0), y es un error. si tuvieras un .nomedia el archivo y las imágenes ya están en él, la Galería seguirá buscando imágenes.

Necesitas crear tu .nomedia presentar antes poner imágenes en él.

Editar: todas las carpetas que comienzan con un punto no se escanean (porque están ocultas).

Respondido el 07 de junio de 12 a las 13:06

"preventivo, no curativo" Esto solo es cierto en Ice Cream Sandwich: vea mi respuesta. - Darshan Rivka Whittle

Con Media Storage 4.1.1 en mi Samsung Galaxy Note 2, ninguno de los trucos anteriores funciona completamente, en este sentido: los directorios que contienen archivos .nomedia aún se escanean, lo que puede agotar mucho la batería (aunque el resultado se ignora en el galería), y también directorios con nombres que comienzan con un '.' todavía están escaneados :-(
Recurrí al uso de la aplicación "Media Scanner Root", que permite desactivar el escáner de medios de mierda por completo. Aparentemente, esto se logra mediante algo como

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

Por cierto, deshabilitar/congelar la aplicación Media Storage en sí tiene el efecto negativo de que la selección y vinculación de tonos de llamada y notificaciones ya no funciona (qué diseño tan maravilloso), pero cuando solo se deshabilita su componente de escáner, todavía se puede usar, por ejemplo, ES File Explorer para seleccionar tonos.

Respondido el 27 de diciembre de 13 a las 09:12

La galería no se actualiza con tanta frecuencia y algunas miniaturas todavía están en la vista. Para esto, debe reiniciar el teléfono o actualizar la galería mediante programación, siguiendo el código.

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

Respondido el 17 de junio de 14 a las 07:06

Reiniciar el teléfono funcionó, al menos en Android 7.1.2 (LineageOS), ¡muchas gracias! - esmoquin

Puede considerar usar la biblioteca Zip de expansión de APK (requiere el nivel de API 5 o superior) para leer los archivos que habrá instalado en la tarjeta SD como parte de un archivo Zip. Una descripción de esta biblioteca se puede encontrar aquí:

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

Presumiblemente, la Galería no mostrará los archivos almacenados en un archivo ZIP en su tarjeta SD.

Además, if tienes imágenes que tu aplicación lee de (pero no escribir a) la tarjeta SD, y que solo debería estar disponible para su propia aplicación, y que podría entregarse cuando su aplicación esté instalada o actualizada, entonces podría tener sentido aprovechar una nueva función de Google Play para incorporarlos como parte de su aplicación cuando está instalada.

Supongo que está almacenando sus imágenes en la tarjeta SD porque son demasiado grandes para caber en su archivo APK (dado su límite de tamaño de 50 MB, que es incluso más pequeño que en la práctica para ciertos dispositivos, debido a problemas de almacenamiento en búfer).

Si es así, podría considerar que Google Play, a partir del 3/5/2012, admite el archivo adjunto (a su aplicación) de hasta dos "archivos de expansión" de hasta 2 Gigabytes cada uno. El APK todavía tiene un máximo de 50 MB, pero los archivos de expansión elevan el almacenamiento total disponible a más de 4 GB. Google le proporciona esos archivos de expansión, y se mantienen en una carpeta de tarjeta SD específica para su aplicación, y se puede acceder a ellos mediante una API proporcionada por la biblioteca de descargas (requiere nivel de API 5 o superior).

Aquí está el anuncio de Google de este cambio:

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

Y aquí hay una descripción detallada de la instalación:

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

Tenga en cuenta que si bien esta función es nueva, las bibliotecas se han suministrado con el SDK de Android para usar con niveles de API anteriores. Por ejemplo, en mi instalación, encuentro las versiones API-8 aquí:

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

Esa misma carpeta incluye la biblioteca Zip de expansión APK mencionada anteriormente en su subcarpeta zip_file.

Todavía no he usado personalmente esta instalación, por lo que la describo basándome únicamente en las referencias citadas.

Respondido el 07 de junio de 12 a las 12:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.