diff --git a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt index c7355b3..b3d736c 100644 --- a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt +++ b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt @@ -215,6 +215,8 @@ class QRView(messenger: BinaryMessenger, id: Int, private val params: HashMap?, result: MethodChannel.Result) { val allowedBarcodeTypes = mutableListOf() try { + checkAndRequestPermission(result) + arguments?.forEach { allowedBarcodeTypes.add(BarcodeFormat.values()[it]) } @@ -255,16 +257,22 @@ class QRView(messenger: BinaryMessenger, id: Int, private val params: HashMap= Build.VERSION_CODES.M -> { - Shared.activity?.requestPermissions( - arrayOf(Manifest.permission.CAMERA), - Shared.CAMERA_REQUEST_ID) + if (Shared.activity?.checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { + permissionGranted = true + channel.invokeMethod("onPermissionSet", true) + } else { + Shared.activity?.requestPermissions( + arrayOf(Manifest.permission.CAMERA), + Shared.CAMERA_REQUEST_ID) + } } else -> { result?.error("cameraPermission", "Platform Version to low for camera permission check", null)