From bc7b24e9b58b194b32b750c5816c8d8ef180834a Mon Sep 17 00:00:00 2001 From: jcesarmobile Date: Tue, 16 Nov 2021 18:31:53 +0100 Subject: [PATCH] fix(android): Allow web geolocation if only COARSE_LOCATION is granted (#5236) --- .../java/com/getcapacitor/BridgeWebChromeClient.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/android/capacitor/src/main/java/com/getcapacitor/BridgeWebChromeClient.java b/android/capacitor/src/main/java/com/getcapacitor/BridgeWebChromeClient.java index 678ba741bb..390e9d191c 100644 --- a/android/capacitor/src/main/java/com/getcapacitor/BridgeWebChromeClient.java +++ b/android/capacitor/src/main/java/com/getcapacitor/BridgeWebChromeClient.java @@ -7,6 +7,7 @@ import android.content.ActivityNotFoundException; import android.content.Intent; import android.net.Uri; +import android.os.Build; import android.os.Environment; import android.provider.MediaStore; import android.view.View; @@ -280,7 +281,13 @@ public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermiss if (isGranted) { callback.invoke(origin, true, false); } else { - callback.invoke(origin, false, false); + final String[] coarsePermission = { Manifest.permission.ACCESS_COARSE_LOCATION }; + // TODO replace with Build.VERSION_CODES.S once we target SDK 31 + if (Build.VERSION.SDK_INT >= 31 && PermissionHelper.hasPermissions(bridge.getContext(), coarsePermission)) { + callback.invoke(origin, true, false); + } else { + callback.invoke(origin, false, false); + } } }; permissionLauncher.launch(geoPermissions);