diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index ae95c4c00882c..3cea295aeb5ca 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -1292,8 +1292,13 @@ public class LocationManagerService extends ILocationManager.Stub implements Run @Override public boolean isProviderEnabled(String provider) { - checkPermission(); + String perms = checkPermission(); if (LocationManager.FUSED_PROVIDER.equals(provider)) return false; + if (ACCESS_COARSE_LOCATION.equals(perms) && + !isProviderAllowedByCoarsePermission(provider)) { + throw new SecurityException("The \"" + provider + + "\" provider requires ACCESS_FINE_LOCATION permission"); + } synchronized (mLock) { LocationProviderInterface p = mProvidersByName.get(provider);