Ver código fonte

Fix getting camera permissions - Android

flutter-beta
Guy Kogus 5 anos atrás
pai
commit
334f85e2aa
1 arquivos alterados com 12 adições e 4 exclusões
  1. +12
    -4
      android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt

+ 12
- 4
android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt Ver arquivo

@@ -215,6 +215,8 @@ class QRView(messenger: BinaryMessenger, id: Int, private val params: HashMap<St
private fun startScan(arguments: List<Int>?, result: MethodChannel.Result) {
val allowedBarcodeTypes = mutableListOf<BarcodeFormat>()
try {
checkAndRequestPermission(result)

arguments?.forEach {
allowedBarcodeTypes.add(BarcodeFormat.values()[it])
}
@@ -255,16 +257,22 @@ class QRView(messenger: BinaryMessenger, id: Int, private val params: HashMap<St
}

private fun hasCameraPermission(): Boolean {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
return permissionGranted ||
Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
Shared.activity?.checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
}

private fun checkAndRequestPermission(result: MethodChannel.Result?) {
when {
Build.VERSION.SDK_INT >= 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)


Carregando…
Cancelar
Salvar