Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo puedo actualizar la Galería después de insertar una imagen en android?

He añadido un insertado en Galería usando la API de Android como sigue:

Images.Media.insertImage (ctx.getContentResolver (), "scard / test.jpg", "Hola", "descripción");

En realidad, la imagen que pasé por su camino completo (scard / test.jpg) ya se ha insertado correctamente en el DB, pero cuando se abre la galería no se puede ver a menos que se apague / en el dispositivo o Mount / Unmount el externo memoria.

¿Hay alguna manera de actualizar la galería a petición?

Gracias

Bassel Kh.

  • Ver dentro de ScrollView no ocupa todo el lugar
  • Error de importación de Android Studio
  • Herramienta de recolección de basura para dalvik
  • Android: determina si el código debe residir en la vista de actividad o personalizada
  • Android get Tiempo UTC actual
  • Cómo amortiguar solamente la última emisión de rx.Observable durante contrapresión
  • ExpandableRecyclerAdapter Cómo forzar el elemento a moverse hacia arriba mientras se expande un elemento
  • Disposición personalizada de Android - onDraw () nunca se llama
  • 4 Solutions collect form web for “¿Cómo puedo actualizar la Galería después de insertar una imagen en android?”

    Encontré este problema recientemente, probé la solución de @ Samuh, pero no funciona perfectamente hasta que encontré la solución del ejemplo de Google :

    // Tell the media scanner about the new file so that it is // immediately available to the user. MediaScannerConnection.scanFile(this, new String[] { file.toString() }, null, new MediaScannerConnection.OnScanCompletedListener() { public void onScanCompleted(String path, Uri uri) { Log.i("ExternalStorage", "Scanned " + path + ":"); Log.i("ExternalStorage", "-> uri=" + uri); } }); 

    Lo intenté y trabajé perfectamente.

    O, de forma similar, puede que desee echar un vistazo a la referencia de la clase MediaScanner y alguien en StackOverflow hizo esta pregunta antes: La imagen, guardada en sdcard, no aparece en la aplicación Galería de Android

    La solución que utiliza el escáner de medios (sendBroadcast) es muy buena, y estoy usando eso en mi aplicación.

    Pero, probablemente, en sdcards con un montón de fotos y datos, esta operación debe llegar a un alto procesamiento cust.

    Hay otra solución, después de guardar su archivo multimedia en la galería, debe informar a la galería DB que otro archivo se insertó. Eso se puede hacer así:

     private void addImageGallery( File file ) { ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.DATA, file.getAbsolutePath()); values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); // setar isso getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); } 

    Este código no guarda el archivo multimedia en la galería, sino que guarda la información de un nuevo archivo en el DB de la galería. Debe guardar el archivo real antes.

    Esta solución es más rápida porque la galería no se volverá a explorar completamente. Pero no es tan confiable porque toda la información sobre el archivo se agrega manualmente.

     static public boolean resetExternalStorageMedia(Context context) { if (Environment.isExternalStorageEmulated()) return (false); Uri uri = Uri.parse("file://" + Environment.getExternalStorageDirectory()); Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED, uri); context.sendBroadcast(intent); return (true); } static public void notifyMediaScannerService(Context context, String path) { MediaScannerConnection.scanFile(context, new String[] { path }, null, new MediaScannerConnection.OnScanCompletedListener() { public void onScanCompleted(String path, Uri uri) { Log.i("ExternalStorage", "Scanned " + path + ":"); Log.i("ExternalStorage", "-> uri=" + uri); } }); } 

    Puedes usar esto para actualizar la Galería de Android:

     public void refreshAndroidGallery(Uri fileUri) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Intent mediaScanIntent = new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); mediaScanIntent.setData(fileUri); mContext.sendBroadcast(mediaScanIntent); } else { mContext.sendBroadcast(new Intent( Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.