From d8bfe61f20f235314bad93a9c50d8b7f3eade734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Gnani?= Date: Mon, 24 Nov 2025 14:27:46 +0100 Subject: [PATCH] fix(barcode-scanner): remove unnecessary permission checks on Android (fix #2312) (#3121) --- ...ndroid-barcode-scanner-permission-check.md | 6 ++++ .../src/main/java/BarcodeScannerPlugin.kt | 36 ++++--------------- 2 files changed, 13 insertions(+), 29 deletions(-) create mode 100644 .changes/fix-android-barcode-scanner-permission-check.md diff --git a/.changes/fix-android-barcode-scanner-permission-check.md b/.changes/fix-android-barcode-scanner-permission-check.md new file mode 100644 index 000000000..a51c6344f --- /dev/null +++ b/.changes/fix-android-barcode-scanner-permission-check.md @@ -0,0 +1,6 @@ +--- +"barcode-scanner": patch +"barcode-scanner-js": patch +--- + +Remove unnecessary checks on Android when requesting camera permission. \ No newline at end of file diff --git a/plugins/barcode-scanner/android/src/main/java/BarcodeScannerPlugin.kt b/plugins/barcode-scanner/android/src/main/java/BarcodeScannerPlugin.kt index ef2eeb347..957240d50 100644 --- a/plugins/barcode-scanner/android/src/main/java/BarcodeScannerPlugin.kt +++ b/plugins/barcode-scanner/android/src/main/java/BarcodeScannerPlugin.kt @@ -54,7 +54,6 @@ import java.util.concurrent.ExecutionException private const val PERMISSION_ALIAS_CAMERA = "camera" private const val PERMISSION_NAME = Manifest.permission.CAMERA -private const val PREFS_PERMISSION_FIRST_TIME_ASKING = "PREFS_PERMISSION_FIRST_TIME_ASKING" @InvokeArg class ScanOptions { @@ -354,17 +353,6 @@ class BarcodeScannerPlugin(private val activity: Activity) : Plugin(activity), } } - private fun markFirstPermissionRequest() { - val sharedPreference: SharedPreferences = - activity.getSharedPreferences(PREFS_PERMISSION_FIRST_TIME_ASKING, MODE_PRIVATE) - sharedPreference.edit().putBoolean(PERMISSION_NAME, false).apply() - } - - private fun firstPermissionRequest(): Boolean { - return activity.getSharedPreferences(PREFS_PERMISSION_FIRST_TIME_ASKING, MODE_PRIVATE) - .getBoolean(PERMISSION_NAME, true) - } - @SuppressLint("ObsoleteSdkInt") @PermissionCallback fun cameraPermissionCallback(invoke: Invoke) { @@ -380,9 +368,7 @@ class BarcodeScannerPlugin(private val activity: Activity) : Plugin(activity), requestPermissionResponse.put(PERMISSION_ALIAS_CAMERA, PermissionState.GRANTED) } else { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (!activity.shouldShowRequestPermissionRationale(PERMISSION_NAME)) { - requestPermissionResponse.put(PERMISSION_ALIAS_CAMERA, PermissionState.DENIED) - } + requestPermissionResponse.put(PERMISSION_ALIAS_CAMERA, PermissionState.DENIED) } else { requestPermissionResponse.put(PERMISSION_ALIAS_CAMERA, PermissionState.GRANTED) } @@ -401,20 +387,12 @@ class BarcodeScannerPlugin(private val activity: Activity) : Plugin(activity), requestPermissionResponse.put(PERMISSION_ALIAS_CAMERA, PermissionState.GRANTED) } else { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (firstPermissionRequest() || activity.shouldShowRequestPermissionRationale( - PERMISSION_NAME - ) - ) { - markFirstPermissionRequest() - requestPermissionForAlias( - PERMISSION_ALIAS_CAMERA, - invoke, - "cameraPermissionCallback" - ) - return - } else { - requestPermissionResponse.put(PERMISSION_ALIAS_CAMERA, PermissionState.DENIED) - } + requestPermissionForAlias( + PERMISSION_ALIAS_CAMERA, + invoke, + "cameraPermissionCallback" + ) + return } else { requestPermissionResponse.put(PERMISSION_ALIAS_CAMERA, PermissionState.GRANTED) }