La intención de la cámara Android devuelve nulo … a veces

Estoy depurando mi aplicación en 2 dispositivos físicos diferentes:

  • Motorola Moto G, Android 4.4.2
  • LG OPTIMUS L5 II, Android 4.1.2

Estoy llamando a la cámara en un botón:

buttonCamera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); } }); 

Y administro el resultado de la intención como esto:

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Uri selectedImage = data.getData(); // <-- Sometimes null } 

El problema aquí es que data.getData() es nulo en el Motorola Moto G pero no en el LG OPTIMUS, ¿por qué es esto? ¿Cómo puedo evitar obtener null en el Motorola Moto G?

Un poco tarde esta respuesta, pero tuve este mismo problema y encontré una solución:

 private static final String STATE_FILE_URI = "state_file_uri"; private static final int BROWSE_CAMERA = 111; private String fileUri; @Override protected void onSaveInstanceState(Bundle outState) { outState.putString(STATE_FILE_URI, fileUri); super.onSaveInstanceState(outState); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { fileUri = savedInstanceState.getString(STATE_FILE_URI); super.onRestoreInstanceState(savedInstanceState); } private void takePictureIntent(){ Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); fileUri = "your_uri"; takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(fileUri))); startActivityForResult(takePictureIntent, BROWSE_CAMERA); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == BROWSE_CAMERA) { if (data == null) { onDeliveryPicture(Uri.parse("file://" + fileUri)); } else { onDeliveryPicture(data.getData()); } } } } private void onDeliveryPicture(Uri uri) { ... } 

¡Espero eso ayude!

  • Android: Tome la fotografía de la cámara sin "guardar" / "eliminar" la confirmación
  • Android 4 - El equilibrio de blanco de la cámara se detiene después del autofoco
  • En actividad resultado cámara intención devolución null en samsung s4
  • La cámara AF_TRIGGER_START no inicia el enfoque enTouch
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.