From 334f85e2aace68fb95a5c09fba19ae970bcb4af2 Mon Sep 17 00:00:00 2001 From: Guy Kogus Date: Wed, 21 Apr 2021 10:15:41 +0200 Subject: [PATCH] Fix getting camera permissions - Android --- .../net/touchcapture/qr/flutterqr/QRView.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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)