0

i'm trying to capture image in android 11 device but request is keep cancelled. i have added also. still unable to capture image. pick image from gallery is working. image is not storing in Android/data folder.

i have added val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION) also still unable to create temp file in storage. please provide any solutions

private fun selectImage() {
        imageUtils.createImageFile(applicationContext).let {
                viewModel.setFileTempPath(it.absolutePath, "doc_name")
                startActivityForResult(imageUtils.captureImage(applicationContext, it), 300)

    }


override fun onActivityResult(
        requestCode: Int,
        resultCode: Int,
        data: Intent?
    ) {
        super.onActivityResult(requestCode, resultCode, data)
        when (requestCode) {
            300 -> when (resultCode) {
                RESULT_OK -> {
                    Log.d("tmppath", data?.data.toString())
                    if (data != null && data.data != null) {

                        val selectedImage: Bitmap =
                            imageUtils.getBitmap(data.data, this@TaggingActivity)!!

                        viewModel.dataModel.selectedImagesArrayList.value.let {

                            if (it == null) {
                                viewModel.dataModel.selectedImagesArrayList.value = ArrayList()
                            }

                            val a = it

                            a?.add(
                                ImageDetailsToUpload(
                                    "",
                                    selectedImage,
                                    Constant.CUSTOMER_GEO_TAG,
                                    viewModel.dataModel.documentName.value,
                                    viewModel.commonModel.currentLocation.value!!
                                )
                            )

                            viewModel.dataModel.selectedImagesArrayList.postValue(a)
                        }

                    } else {
                        if (viewModel.dataModel.tmpPath.value != null) {

                            imageUtils.getBitmapFromPath(viewModel.dataModel.tmpPath.value)
                                ?.let { selectedImage ->
                                    val a = viewModel.dataModel.selectedImagesArrayList.value

                                    a?.add(
                                        ImageDetailsToUpload(
                                            "",
                                            selectedImage,
                                            Constant.CUSTOMER_GEO_TAG,
                                            viewModel.dataModel.documentName.value,
                                            viewModel.commonModel.currentLocation.value!!
                                        )
                                    )

                                    viewModel.dataModel.selectedImagesArrayList.postValue(a)
                                } ?: run {
                                viewModel.commonModel.showToastTextView("Sorry Try Again..!")
                            }


                        } else {
                            viewModel.commonModel.showToastTextView("Sorry Try Again..!")
                            return
                        }
                    }
                    viewModel.dataModel.tmpPath.value = null
                }
                RESULT_CANCELED -> {
                    viewModel.setFileTempPath("", "")
                    Toast.makeText(this,"cancelled",Toast.LENGTH_LONG).show()
                }
            }
            
    }

//Intent class

fun getCameraIntent(file: File): Intent {
        val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
        takePictureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file))
        if (Build.VERSION.SDK_INT >= 24) {
            try {
                val m =
                    StrictMode::class.java.getMethod("disableDeathOnFileUriExposure")
                m.invoke(null)
            } catch (e: java.lang.Exception) {
                e.printStackTrace()
            }
        } else {
            takePictureIntent.putExtra("return-data", true)
            takePictureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        }
        val pickPhoto = Intent(
            Intent.ACTION_PICK,
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI
        )
        val intents: ArrayList<Intent> = arrayListOf()
        intents.add(takePictureIntent)
        intents.add(pickPhoto)
        val chooserIntent = Intent.createChooser(
            intents.removeAt(intents.size - 1),
            " Document Upload"
        )
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents.toArray(arrayOf<Parcelable>()))
        return chooserIntent
    }
Pritham Bnr
  • 839
  • 2
  • 9
  • 16
  • Does this answer your question? [Android 11 Capture image using Camera](https://stackoverflow.com/questions/63950633/android-11-capture-image-using-camera) – Nirel Jul 30 '21 at 13:05
  • tried but its not working. RESULT_CANCELLED is calling – Pritham Bnr Jul 30 '21 at 13:09

0 Answers0