onActivityResult resultCode дает наоборот результат - PullRequest
0 голосов
/ 28 августа 2018

Я использую способ захвата изображений Android по умолчанию, и у меня проблема. Это мой код

 fun onCameraClick(): View.OnClickListener {
        return View.OnClickListener {
            val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)

            if (intent.resolveActivity(dialog.context.packageManager) != null) {
                var photoFile: File? = null

                try {
                    photoFile = dialog.context.createImageFile()
                } catch (e: IOException) {
                    Timber.e(e)
                }

                photoFile?.let {
                    val photoURI = FileProvider.getUriForFile(
                            dialog.context,
                            "${dialog.context.packageName}.fileprovider",
                            it
                    )
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI)
                    generalBottomSheetDialogFragment?.startActivityForResult(intent, CAMERA_REQUEST_CODE)
                }
            }
        }
    }

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

        when (requestCode) {
            CAMERA_REQUEST_CODE -> {

                when {
                    requestCode == -1 -> {

                    }
                    requestCode == RESULT_CODE_OK -> {

                    }
                    else -> {

                    }
                }

            }
            PDF_REQUEST_CODE ->
                data?.also {
                    generalResponse.setElement(it)
                    dialog.dismiss()
                }
        }


    }

Моя проблема в том, что когда я успешно делаю снимок, resultCode будет равен -1, а когда я нажимаю обратно с камеры, я получаю RESULT_CODE_OK. Может ли кто-нибудь помочь мне понять, почему это происходит? Что я не вижу?

1 Ответ

0 голосов
/ 28 августа 2018

Основная причина: Поскольку ваш код неверен

Решение: Изменить код

С

when {
    requestCode == -1 -> {

    }
    requestCode == RESULT_CODE_OK -> {

    }
    else -> {

    }
}

К

when {
    resultCode == Activity.RESULT_OK -> {

    }
    resultCode == Activity.RESULT_CANCELED -> {

    }
    else -> {

    }
}
...