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

Commit f4d207b1 authored by Mike Lockwood's avatar Mike Lockwood
Browse files

Don't throw an exception from isProviderEnabled and getLastKnownLocation



if the location provider does not exist.  Instead use the same behavior
as if the provider were disabled in settings
(return false for isProviderEnabled and null from getLastKnownLocation).
This eliminates for a lot of exception handling around some simple
queries to the location manager.

BUG: 2841014

Change-Id: I4fbe0c088e915c90969e13083201dd3e7f4029cb
Signed-off-by: default avatarMike Lockwood <lockwood@android.com>
parent eec69d29
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -424,8 +424,7 @@ public class LocationManager {
     * {@link LocationListener#onLocationChanged} method will be called for
     * each location update
     *
     * @throws IllegalArgumentException if provider is null or doesn't exist
     * @throws IllegalArgumentException if listener is null
     * @throws IllegalArgumentException if provider or listener is null
     * @throws RuntimeException if the calling thread has no Looper
     * @throws SecurityException if no suitable permission is present for the provider.
     */
@@ -977,7 +976,7 @@ public class LocationManager {
     * @return true if the provider is enabled
     *
     * @throws SecurityException if no suitable permission is present for the provider.
     * @throws IllegalArgumentException if provider is null or doesn't exist
     * @throws IllegalArgumentException if provider is null
     */
    public boolean isProviderEnabled(String provider) {
        if (provider == null) {
+2 −6
Original line number Diff line number Diff line
@@ -1613,8 +1613,6 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
            }
        } catch (SecurityException se) {
            throw se;
        } catch (IllegalArgumentException iae) {
            throw iae;
        } catch (Exception e) {
            Slog.e(TAG, "isProviderEnabled got exception:", e);
            return false;
@@ -1638,7 +1636,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run

        LocationProviderInterface p = mProvidersByName.get(provider);
        if (p == null) {
            throw new IllegalArgumentException("provider=" + provider);
            return false;
        }
        return isAllowedBySettingsLocked(provider);
    }
@@ -1650,8 +1648,6 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
            }
        } catch (SecurityException se) {
            throw se;
        } catch (IllegalArgumentException iae) {
            throw iae;
        } catch (Exception e) {
            Slog.e(TAG, "getLastKnownLocation got exception:", e);
            return null;
@@ -1663,7 +1659,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run

        LocationProviderInterface p = mProvidersByName.get(provider);
        if (p == null) {
            throw new IllegalArgumentException("provider=" + provider);
            return null;
        }

        if (!isAllowedBySettingsLocked(provider)) {