Guardar imágenes en la galería de Android




Si quieres que las fotos o vídeos de tu aplicación aparezcan en la galería de Android, copia y pega el siguiente código:


 
/**
 * Save image to gallery
 */
 public static void SaveToGallery(String path, Context context)
 {
    ContentValues v = new ContentValues();
    v.put(Images.Media.TITLE, "MIFOTO");
    v.put(Images.Media.DISPLAY_NAME, "MIFOTO.jpg");
    v.put(Images.Media.DESCRIPTION, "Una foto de mi app");
    v.put(Images.Media.MIME_TYPE, "image/*");
    v.put(Images.Media.ORIENTATION, 0);

    File f = new File(path);
    File parent = f.getParentFile();
    String fpath = parent.toString().toLowerCase(Locale.getDefault());
    String name = parent.getName().toLowerCase(Locale.getDefault());
    v.put(Images.ImageColumns.BUCKET_ID, fpath.hashCode());
    v.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, name);
    v.put(Images.Media.SIZE, f.length());
    f = null;

    v.put("_data", path);
    ContentResolver c = context.getContentResolver();
    c.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, v);
}

Después, sólo hay que pedirle al sistema que refresque el contenido multimedia:


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