Galaxy S3: tomar fotos en modo retrato destruye actividad

Por lo tanto, esta pregunta se ha pedido en muchas formas en este foro, pero ninguna de las respuestas me están ayudando. Tengo un error que sólo he podido reproducir en el Samsung Galaxy S3.

Quiero simplemente tomar y almacenar una foto usando la cámara del teléfono, pero mi Actividad está siendo destruida antes de que yo vuelva a escuchar de onActivityResult. Esto sucede SOLAMENTE cuando utilizo la cámara en modo del retrato, en modo del paisaje está muy bien.

Estoy usando este código para iniciar la cámara:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, Config.ACTIVITY_TAKE_PHOTO); 

En modo retrato, nunca veo una llamada a onActivityResult (de la actividad Cámara), sólo veo un onDestroy () llamado en mi actividad de lanzamiento. No hay excepciones o errores en el registro, y nada obviamente equivocado para hacer que se bloquee.

He visto mensajes que recomiendan añadir "android: configChanges =" orientation | keyboardHidden "" al Manifiesto, y hacer muchas otras cosas para administrar el cambio de orientación que se produce al usar la cámara, pero nada ha ayudado hasta ahora.

¿Alguien más ha resuelto este problema?

Si está apuntando más allá del nivel API 13,

 android:configChanges="orientation|keyboardHidden" 

Al Manifiesto no será suficiente.

Comprueba este extracto de la documentación de Android

Nota: Si su aplicación apunta al nivel API 13 o superior (como declarado por los atributos minSdkVersion y targetSdkVersion), también debe declarar la configuración "screenSize", porque también cambia cuando un dispositivo cambia entre orientaciones vertical y horizontal.

Por lo tanto, intenta agregar

 android:configChanges="orientation|keyboardHidden|screenSize" 

A su archivo de manifiesto. Esto debería solucionar tu problema.

Android puede llamar al método destroy () en ciertos escenarios. Uno es cuando usamos el método finish (). Una alternativa es usar el método isFinishing () de la clase Activity. Si realmente se está finalizando podría finalizar sus recursos, de lo contrario, puede mantener los valores asignados a una clase que hereda Application

 @Override protected void onDestroy() { final YourApp app = (YourApp) getApplicationContext(); if (app != null && isFinishing()) { app.finalizeAppResources(); } // ... super.onDestroy(); } 
  • Deshabilitar salidas nativas de logcat en Android
  • Android gridview se estrella en Galaxy 3
  • Mensaje de logcat de Android (E / SMD: DCD activado)
  • Java.lang.OutOfMemoryError en Android 5.0, causado por una asignación de 16k cuando 5M está disponible
  • ¿Cómo deshacerse de "Esta aplicación está causando que su dispositivo se ejecute lentamente" notificación (tiempo de desarrollo de la aplicación)?
  • Samsung Galaxy Camera Android API - aplicaciones de cámara personalizadas
  • DDMS (monitor de depuración de Android) no lista procesos en Galaxy S II
  • Eclipse "funciona como android" no hace nada
  • Señal 11 SIGSEGV Crash en Galaxy S3 Android WebView
  • Eclipse y Android: no se puede depurar en Samsung Galaxy S2 porque no se ha detectado
  • Android - Obtener imágenes de la galería Samsung S4 / S5
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.