Solución:
Esta no es una respuesta directa a su pregunta específica, pero me gustaría proponer un flujo de trabajo diferente que puede evitar el problema por completo.
Cuando tome la foto por primera vez, guárdela en la memoria (use BitmapFactory.decodeByteArray
en lugar de BitmapFactory.decodeFile
) o escriba el archivo en un archivo temporal (consulte File.createTempFile). En cualquier caso, la idea es no escribe el archivo en el directorio de la galería.
Luego, si el usuario elige ‘guardar’, escriba / copie el archivo en el directorio de la galería. Si eligen ‘eliminar’, elimine el archivo temporal (o no lo haga, y deje que el sistema operativo lo limpie).
Una vez que escriba el archivo (guardar), actualice la galería con el archivo específico usando
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(myNewFile)));
como se menciona en ¿Cómo puedo actualizar la Galería de Android después de una foto?