Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5759437 authored by Tom O'Neill's avatar Tom O'Neill
Browse files

Improve some javadoc related to isProviderEnabled() apis

- LocationManager.isProviderEnabled() no longer throws SecurityException:
the caller could already circumvent the permission check by calling
Secure.isLocationProviderEnabled()

Change-Id: I5abd04264299671ed35ce4594b5be46d86378767
parent e91a3f52
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -3333,7 +3333,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;
        /**
@@ -4382,10 +4384,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) {
@@ -4398,8 +4403,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
+12 −6
Original line number Diff line number Diff line
@@ -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
+4 −0
Original line number Diff line number Diff line
@@ -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();