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?

2 Solutions collect form web for “Galaxy S3: tomar fotos en modo retrato destruye actividad”

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(); } 
  • ¿Es posible comprobar el estado de las aplicaciones "Contactos" y "Mensajería" mediante un servicio de fondo en Android?
  • Galaxy S7 Nougat Iconos Completos
  • ¿Hay un emulador para Galaxy Tab 10.1?
  • ¿Cómo acceder al sensor de temperatura Galaxy S5?
  • Los datos de imagen de la cámara Android2 API se voltearon y se aplastaron en la galaxia S5
  • Samsung Galaxy Camera Android API - aplicaciones de cámara personalizadas
  • ¿Puede alguien confirmar este problema (número limitado de descriptores de archivo en algunos dispositivos Android)?
  • Abrir el menú de ServiceMode por programa en Android
  • Sensor de proximidad en Galaxy S4 (Air Gestures)
  • No se puede crear el directorio en el almacenamiento externo aunque los permisos aparentemente están configurados correctamente
  • ¿Puedo ayudar al Galaxy S III a reconocer una dirección?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.