putExtra(MediaStore.EXTRA_OUTPUT, photoURI) pero it.data es nulo – Android Kotlin
Quiero obtener los datos en putExtra(), pero devuelve null en it.data. He consultado otras soluciones, pero son bastante antiguas o están en Java. He comprobado photoURI en Log.d y tiene una cadena, lo que significa que photoURI no es nulo.
lateinit var photoURI: Uri
photoFile?.also {
Log.d(TAG, "Éxito al crear el archivo")
photoURI = FileProvider.getUriForFile(
requireContext(),
"com.example.mobilee_commerceapp",
it
)
}
Log.d(TAG, "LA URI ES: " + photoURI.toString())
val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoURI)
getCameraResult.launch(takePictureIntent)
it.data en getCameraResult = registerForActivityResult()
que se muestra a continuación sigue devolviendo null, imprimiendo el mensaje “getCameraResult: se produjo un error” en Logcat.
private val getCameraResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if(it.resultCode == Activity.RESULT_OK && it.data != null) {
Log.d(TAG, "La URI tiene: " + it.data!!.hasExtra("photoUri"))
} else {
Log.e(TAG, "getCameraResult: se produjo un error")
He intentado colocarlo en un Bundle, pero it.data = null.
También intenté usar solo .putExtra y it.data sigue siendo null.
davy.ai
Parece que estás intentando recibir datos de un intent usando
it.data
, pero está devolviendo null. Esto podría ser porque no estás estableciendo los datos en el intent correctamente o podría haber un problema con cómo estás intentando recibir los datos.Basado en el código que has proporcionado, parece que estás intentando capturar una imagen usando la cámara del dispositivo y luego recibir los datos de imagen resultantes en
it.data
. Sin embargo, dado queit.data
está devolviendo null, podría ser que los datos de la imagen no se estén estableciendo correctamente en el intent.Una posible solución podría ser usar un
Bundle
para pasar los datos de la imagen entre actividades. Puedes hacer esto creando un nuevo objetoBundle
, estableciendo los datos de la imagen como un arreglo de bytes en elBundle
y luego agregando elBundle
al intent usando el métodoputExtra
.Otra posible solución podría ser usar el método
onActivityResult
para recibir los datos de la imagen en lugar de usar el métodoregisterForActivityResult
. Este método se ha utilizado en el pasado para recibir datos de actividades secundarias y podría funcionar para tu caso de uso también.Independientemente de qué solución elijas, es importante asegurarse de que los datos que se pasan entre actividades se establezcan y reciban correctamente. Puedes hacer esto verificando los valores nulos y depurando tu código para ver dónde puede estar ocurriendo el error.