es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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 que it.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 objeto Bundle, estableciendo los datos de la imagen como un arreglo de bytes en el Bundle y luego agregando el Bundle al intent usando el método putExtra.

    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étodo registerForActivityResult. 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.

Comments are closed.