ver - fotos ocultas android
Android-.nomedia no funciona para imágenes (9)
Bueno ... admito que solo estoy adivinando, pero dado que obtuve un +1 en el comentario, daré un giro como respuesta. Como 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, sabes qué archivos cargar en tu propia aplicación y cómo guardarlos.
Tengo imágenes, que se leen desde sdcard solo por una aplicación particular, así que quiero ocultarlo 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 puse con "." al principio. Sigue sin funcionar. ¿Algunas ideas?
El archivo .nomedia
es preventivo, no curativo (en Android 4.0), y es un error. Si tenía un archivo .nomedia
y las imágenes ya están en él, la Galería seguirá buscando imágenes.
Necesita crear su archivo .nomedia
antes de poner imágenes en él.
Editar : todas las carpetas que comienzan con un punto no se escanean (porque están ocultas).
Puede considerar usar la biblioteca Zip de expansión de APK (requiere un nivel de API 5 o superior) para leer los archivos que tendrá instalados 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, si tiene imágenes que su aplicación lee (pero no escribe ) de la tarjeta SD, y que solo deberían estar disponibles para su propia aplicación, y que podrían entregarse cuando su aplicación se instale o actualice, entonces podría tiene sentido aprovechar una nueva instalació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 50MB, que es aún más pequeño que eso en la práctica para ciertos dispositivos, debido a problemas de almacenamiento en búfer).
En ese caso, podría considerar que Google Play, desde el 3/5/2012, admite el archivo adjunto (para 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 aumentan el almacenamiento total disponible a más de 4 GB. Esos archivos de expansión son servidos por Google, y se guardan en una carpeta de tarjeta SD específica para su aplicación, y se puede acceder mediante una API proporcionada por la Biblioteca de descarga (requiere API de nivel 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 instalación es nueva, las bibliotecas se han suministrado con el SDK de Android para usar con los niveles de API anteriores. Por ejemplo, en mi instalación, encuentro las versiones de 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.
Personalmente, aún no he usado este servicio yo mismo, y por eso lo describo solo en base a las referencias citadas.
Supongo que estás usando Android 4.0, ya que .nomedia
funcionó correctamente hasta entonces. El informe de error AOSP para el problema explica:
MediaScanner
en Android 4.0 no olvida los archivos ya indexados cuando encuentra un archivo .nomedia
, pero lo .nomedia
si está presente en la primera pasada. Entonces, la solución es simplemente cambiar el nombre del directorio. Por supuesto, puede cambiar el nombre después de la próxima exploración, si lo desea.
Actualización : supongo que la solución completa sería forzar una exploración de medios después de cambiar el nombre del directorio. No lo he intentado, pero algo como esto debería hacer el truco:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" +
Environment.getExternalStorageDirectory())));
Aquí hay algo que me encontré a mí mismo:
Sin embargo, una pequeña alteración a ese método:
- Descargue e instale la aplicación SDRescan
- Borrar datos para la aplicación Galería
- Borrar datos para la aplicación Media Storage
- Abra la aplicación SDRescan descargada desde el paso 1
SDCard debe volver a escanearse y todos los directorios que contengan archivos .nomedia deben ignorarse en este punto.
El error .nomedia es correcto y PUEDE agregarlo a una carpeta de imágenes preexistente.
Puede obligar a la galería a volver a indexar después de haber creado el archivo .nomedia cambiando el nombre de la carpeta, ejecutar la galería (la "carpeta oculta ahora debería faltar") y cambiar el nombre de la carpeta a la que desea. Debe permanecer oculta.
Lo hice nuevamente para asegurarme de que funciona en mi teléfono. Android 4.0.4.
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 la batería (aunque el resultado se ignora en el galería), y también directorios con nombres que comienzan con un ''.'' todavía se escanean :-(
Recurrí a usar la aplicación "Media Scanner Root", que permite deshabilitar por completo el escáner de medios. Esto aparentemente se logra por algo como
pm disable com.android.providers.media/com.android.providers.media.MediaScannerReceiver
Por cierto, deshabilitar / congelar la aplicación Media Storage tiene el mal efecto de que la selección y el enlace de tonos de llamada y notificaciones ya no funciona (qué maravilloso diseño), pero cuando solo se deshabilita su componente de escáner, uno todavía puede usar, por ejemplo, ES File Explorer para seleccionar tonos.
La galería no se actualiza con tanta frecuencia y algunas miniaturas todavía están en la vista. Para esto, necesita 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())));
}
En mi tarjeta de memoria tengo miles de fotos que abruman el escáner de medios. Luego, en la carpeta raíz de mi tarjeta de memoria, renombrada de "RootFolder" a ".RootFolder"
Se convirtió en el directorio oculto y no usó más .nomedia
Prueba esto.