diff options
-rw-r--r-- | core/java/android/provider/Settings.java | 13 | ||||
-rw-r--r-- | location/java/android/location/LocationManager.java | 18 | ||||
-rw-r--r-- | services/java/com/android/server/LocationManagerService.java | 4 |
3 files changed, 25 insertions, 10 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index b70d74a..025926e 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -3335,7 +3335,9 @@ public final class Settings { */ public static final int LOCATION_MODE_SENSORS_ONLY = 1; /** - * Reduced power usage, such as limiting the number of GPS updates per hour. + * Reduced power usage, such as limiting the number of GPS updates per hour. Requests + * with {@link android.location.Criteria#POWER_HIGH} may be downgraded to + * {@link android.location.Criteria#POWER_MEDIUM}. */ public static final int LOCATION_MODE_BATTERY_SAVING = 2; /** @@ -4384,10 +4386,13 @@ public final class Settings { /** * Helper method for determining if a location provider is enabled. + * * @param cr the content resolver to use * @param provider the location provider to query * @return true if the provider is enabled - * @deprecated use {@link #getInt(ContentResolver, String)} and {@link #LOCATION_MODE} + * + * @deprecated use {@link #LOCATION_MODE} or + * {@link LocationManager#isProviderEnabled(String)} */ @Deprecated public static final boolean isLocationProviderEnabled(ContentResolver cr, String provider) { @@ -4400,8 +4405,8 @@ public final class Settings { * @param provider the location provider to query * @param userId the userId to query * @return true if the provider is enabled - * @deprecated use {@link #getIntForUser(ContentResolver, String, int, int)} and - * {@link #LOCATION_MODE} + * @deprecated use {@link #LOCATION_MODE} or + * {@link LocationManager#isProviderEnabled(String)} * @hide */ @Deprecated diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 14b812e..ccb4304 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -152,17 +152,18 @@ public class LocationManager { /** * Broadcast intent action when the configured location providers - * change. If you're interacting with the - * {@link android.provider.Settings.Secure#LOCATION_MODE} API, - * use {@link #MODE_CHANGED_ACTION} instead. + * change. For use with {@link #isProviderEnabled(String)}. If you're interacting with the + * {@link android.provider.Settings.Secure#LOCATION_MODE} API, use {@link #MODE_CHANGED_ACTION} + * instead. */ public static final String PROVIDERS_CHANGED_ACTION = "android.location.PROVIDERS_CHANGED"; /** * Broadcast intent action when {@link android.provider.Settings.Secure#LOCATION_MODE} changes. - * If you're interacting with provider-based APIs such as {@link #getProviders(boolean)}, you - * use {@link #PROVIDERS_CHANGED_ACTION} instead. + * For use with the {@link android.provider.Settings.Secure#LOCATION_MODE} API. + * If you're interacting with {@link #isProviderEnabled(String)}, use + * {@link #PROVIDERS_CHANGED_ACTION} instead. * * In the future, there may be mode changes that do not result in * {@link #PROVIDERS_CHANGED_ACTION} broadcasts. @@ -1098,8 +1099,13 @@ public class LocationManager { * <p>If the user has enabled this provider in the Settings menu, true * is returned otherwise false is returned * + * <p>Callers should instead use + * {@link android.provider.Settings.Secure#LOCATION_MODE} + * unless they depend on provider-specific APIs such as + * {@link #requestLocationUpdates(String, long, float, LocationListener)}. + * * @param provider the name of the provider - * @return true if the provider is enabled + * @return true if the provider exists and is enabled * * @throws IllegalArgumentException if provider is null * @throws SecurityException if no suitable permission is present diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index de29155..f70f4db 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -1773,8 +1773,12 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public boolean isProviderEnabled(String provider) { + // TODO: remove this check in next release, see b/10696351 checkResolutionLevelIsSufficientForProviderUse(getCallerAllowedResolutionLevel(), provider); + + // Fused provider is accessed indirectly via criteria rather than the provider-based APIs, + // so we discourage its use if (LocationManager.FUSED_PROVIDER.equals(provider)) return false; int uid = Binder.getCallingUid(); |