TransWikia.com

meu código não entra na onActivityResult (kotlin)

Stack Overflow em Português Asked by José Otavio on January 17, 2021

Boa tarde, estou tentando tirar uma foto com a câmera do celular e salvar ela em um banco de dados, porem eu não consigo recuperar o bitmap da imagem, eu consigo abrir a camera e tirar a foto mas na hora de entrar no onActivityResult o app nao entra na classe, aqui oque estou tentando fazer:

private fun abrirCamera() {

    Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { takePictureIntent ->
        // Ensure that there's a camera activity to handle the intent
        takePictureIntent.resolveActivity(packageManager)?.also {
            // Create the File where the photo should go
            val photoFile: File? = try {
                createImageFile()
            } catch (ex: IOException) {
                // Error occurred while creating the File
                null
            }
            // Continue only if the File was successfully created
            if (photoFile != null) {
                photoFile?.also {
                    val photoURI: Uri = FileProvider.getUriForFile(
                        this,
                        "com.example.xamodeliveryloja.fileprovider",
                        it
                    )
                    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI)
                    startActivityForResult(takePictureIntent, PICK_IMAGE_CODE)
                }
            }
        }
    }

}

@Throws(IOException::class)
private fun createImageFile(): File {
    // Create an image file name
    val timeStamp: String = SimpleDateFormat("ddMMyyy_HHmmss").format(Date())
    val storageDir: File? = getExternalFilesDir(Environment.DIRECTORY_PICTURES)
    return File.createTempFile(
        "JPEG_${timeStamp}_", /* prefix */
        ".jpg", /* suffix */
        storageDir /* directory */
    ).apply {
        // Save a file: path for use with ACTION_VIEW intents
        currentPhotoPath = absolutePath
    }
}



 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
            try {
                when(requestCode){
                    PICK_IMAGE_CODE ->
                        if(resultCode == Activity.RESULT_OK && data != null){
                            //val thumbnail = MediaStore.Images.Media.getBitmap(
                            //contentResolver, imageUri)
                             //  bitFotoSelecionada = data.extras?.get("data") as Bitmap
                            // colocaFotoProduto.setImageBitmap(bitFotoSelecionada)
        
                            val file = File(currentPhotoPath)
                            val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, Uri.fromFile(file))
                            if(bitmap != null){
                                colocaFotoProduto.setImageBitmap(resize(this,bitmap,100F,100F))
                                bitFotoSelecionada = bitmap
                            }
                        }
        
                    PICK_IMAGE ->
                        if(resultCode == Activity.RESULT_OK && data != null){
                            val uri = data.data
                            bitFotoSelecionada = MediaStore.Images.Media.getBitmap(this.contentResolver, uri)
                            colocaFotoProduto.setImageBitmap(resize(this,bitFotoSelecionada,100F,100F))
                        }
        
                }
            }catch (e: Exception){
                e.printStackTrace()
        
        }
    }

Estou ultilizando este metodo pois preciso que a qualidade da imagem seja boa, segui a documentação da google aqui, este codigo funciona no meu emulador no pc mas ja testei em 2 celulares um com android 6 e um com o android 8 porem nem um dos dois entra na onActivityResult, consigo pegar a imagem usando o metodo de miniaturas

    private fun abrirCamera() {
    val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    startActivityForResult(intent, PICK_IMAGE_CODE)

}

com este funciona normalmente porem a qualidade fica muito ruim

One Answer

Boa tarde, consegui solucionar o problema peço desculpas pelo importuno era um erro besta mas eu nao estava conseguindo debugar no meu celular pq ele e bem velho consegui debugar em outro e descobri o problema estava nesse IF

resultCode == Activity.RESULT_OK && data != null

Answered by José Otavio on January 17, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP