From efc20e8035c25ace4993bc231d925e307f3a3f0d Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Thu, 24 Oct 2024 12:38:35 +0100 Subject: [PATCH] fix(android): only request permissions to the gallery for Android <= 9 (API 28) Context: For Android >= 10, we don't need to request permissions to save the photo to the gallery. More info here: https://developer.android.com/media/camera/camera-deprecated/photobasics#TaskPath References: https://outsystemsrd.atlassian.net/browse/RMET-3767 --- .../capacitorjs/plugins/camera/CameraPlugin.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/camera/android/src/main/java/com/capacitorjs/plugins/camera/CameraPlugin.java b/camera/android/src/main/java/com/capacitorjs/plugins/camera/CameraPlugin.java index 2dce20da1..bdd1315b2 100644 --- a/camera/android/src/main/java/com/capacitorjs/plugins/camera/CameraPlugin.java +++ b/camera/android/src/main/java/com/capacitorjs/plugins/camera/CameraPlugin.java @@ -204,7 +204,18 @@ private boolean checkCameraPermissions(PluginCall call) { boolean hasGalleryPerms = getPermissionState(SAVE_GALLERY) == PermissionState.GRANTED; // If we want to save to the gallery, we need two permissions - if (settings.isSaveToGallery() && !(hasCameraPerms && hasGalleryPerms) && isFirstRequest) { + // actually we only need permissions to save to gallery for Android <= 9 (API 28) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + // we might still need to request permission for the camera + if (!hasCameraPerms) { + requestPermissionForAlias(CAMERA, call, "cameraPermissionsCallback"); + return false; + } + return true; + } + + // we need to request permissions to save to gallery for Android <= 9 + else if (settings.isSaveToGallery() && !(hasCameraPerms && hasGalleryPerms) && isFirstRequest) { isFirstRequest = false; String[] aliases; if (needCameraPerms) {