Yo estaba muy frustrado por esto también. Sin embargo, encontré una solución (bastante lamentable).
Debo decir, inmediatamente, que no estaba usando el ACTION_IMAGE_CAPTURE Intent estándar. Debido a que quería tener la imagen de la cámara en una ventana, he usado mi propio diseño y he utilizado la siguiente plantilla:
How to Program the Google Android Camera to Take Pictures
Al tocar la pantalla llama a la función Camera.PictureCallbackonPictureTaken (byte [] imageData, Camera c), que es donde tomo el byte [] que contiene la imagen. Tengo una variable global "byte [] MainApplication.snapshotBytes" asignada por imageData desde esta función.
Ahora que los datos se han guardado globalmente, y están disponibles para la actividad de llamada, ¿cómo debe terminarse la actividad actual para que se notifique la actividad de llamada? Bueno, hay varias maneras, pero me di cuenta desde el principio que presionar el botón Atrás todavía llama al OnActivityResult (...). Entonces, hice lo siguiente:
if (imageData != null)
{
MainApp.snapshotBytes = imageData;
setResult(RESULT_OK);
onBackPressed();
}
La actividad de llamada ahora era responsable de tres cosas más.
1: Establece MainApp.snapshotBytes = null antes de iniciar la actividad de la cámara.
2: Cuando se llama el onActivityResult (...), primero se comprueba la resultCode * == RESULT_OK * y, a continuación, hizo uso de los datos de imagen que se almacena en los MainApp.snapshotBytes globales.
3: Finalmente, configuró MainApp.snapshotBytes = null nuevamente para que la memoria pueda ser recuperada por GC.
Voy a ser el primero en admitir que es un error, pero funciona y es compatible con o sin el error Camera-null-Intent.
Espero que esto ayude!
No pudo obtener ninguna información de Logcat? – Macarse
¿Has actualizado tu dispositivo a 3.1 todavía? Gran parte de las aplicaciones internas tenían errores en la versión 3.0 que apareció en ese dispositivo. Puede intentar actualizar manualmente a 3.1 y volver a intentarlo. – Devunwired