Android data.getData () devuelve null de CameraActivity para algunos teléfonos

Tengo un error fatal que ocurre en mi onActivityResult que viene de una actividad de la cámara fotográfica. Lo que me tiene arañando la cabeza es que el error sólo está ocurriendo en un puñado de teléfonos (basado en el número de usuarios afectados), mientras que parece que no hay nada malo para la mayoría. Puedo duplicar el error en mi Nexus 6 (ejecutando Lollipop 5.1.1) mientras mi Nota 5 (también 5.1.1) no tiene ningún problema en absoluto.

El problema es cuando estoy tratando de asignar el imageUri de data.getData (). Debugging en la Nota 5, data.mData es igual a "content: // media / external / images / media / 2215" mientras que en el Nexus 6, data.mData es null.

Sé que esta es una pregunta común hecha en SO pero no he encontrado nada que me haya ayudado hasta ahora. ¿Puede alguien apuntarme a la solución para esto y dar una respuesta?

Método Inicio de la actividad de la cámara para el resultado

@OnClick(R.id.change_image_camera) public void takePicture(){ Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);} 

OnActvityResult

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { Uri imageUri = data.getData(); //The trouble is here String realPath = Image.getPath(this, imageUri); //getPath crashes because imageUri is null Image.compressImage(realPath); File file = new File(realPath); Bundle extra = new Bundle(); extra.putString("URL", realPath); returnIntent.putExtras(extra); setResult(RESULT_OK, returnIntent); finish(); } } 

¡Agradezco mucho cualquier ayuda en éste!

One Solution collect form web for “Android data.getData () devuelve null de CameraActivity para algunos teléfonos”

 Uri imageUri = data.getData(); //The trouble is here 

No es necesario que una aplicación de cámara devuelva un Uri apunte a la foto, ya que no forma parte del protocolo de Intent ACTION_IMAGE_CAPTURE . Ya sea:

  • Suministre EXTRA_OUTPUT en su Intent ACTION_IMAGE_CAPTURE , en cuyo caso usted sabe dónde debe almacenarse la imagen y no necesita confiar en getData() , o

  • Utilice los data adicionales en la Intent respuesta, que será un Bitmap de Bitmap de una imagen en miniatura de la imagen

Su siguiente error está aquí:

 String realPath = Image.getPath(this, imageUri); 

No es necesario que la imagen se almacene como un archivo al que pueda acceder, a menos que proporcione una ruta a esa ubicación a través de EXTRA_OUTPUT .

  • Imagen de Uri a bytesarray
  • ¿Cómo comprobar si el recurso apuntado por Uri está disponible?
  • Android: obtener un recurso de imagen en Uri: IllegalArgumentException
  • Cómo tomar una foto, guardarla y obtener la foto en Android
  • Indexación de aplicaciones para Android y enlaces profundos: ¿me equivoqué todo el tiempo?
  • Obtener imagen Uri en onActivityResult después de tomar la foto?
  • Obtener ruta y nombre de archivo del resultado de la intención de la cámara
  • Android Webview método shouldOverrideUrlLoading
  • Cómo restaurar el archivo vcf sin utilizar la aplicación externa?
  • Convierta java.net.URI a android.net.Uri
  • Cómo convertir un archivo: // uri en contenido: // uri?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.