From 40a86c24d2601df4966c57573a5bf58b30a41990 Mon Sep 17 00:00:00 2001 From: Tom O'Neill Date: Tue, 3 Sep 2013 18:05:13 -0700 Subject: [PATCH] Add LocationManager.MODE_CHANGED_ACTION broadcast - Currently redundant with PROVIDERS_CHANGED_ACTION, but that may change in the future - Part of fix for b/10409275 Change-Id: I12daaf20e6546fd9e9dc71c599967fa0ad95e27f --- api/current.txt | 1 + core/res/AndroidManifest.xml | 1 + location/java/android/location/LocationManager.java | 14 +++++++++++++- .../java/com/android/server/LocationManagerService.java | 2 ++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/api/current.txt b/api/current.txt index 458c57766889..ad6b59cae847 100644 --- a/api/current.txt +++ b/api/current.txt @@ -11922,6 +11922,7 @@ package android.location { field public static final java.lang.String KEY_PROVIDER_ENABLED = "providerEnabled"; field public static final java.lang.String KEY_PROXIMITY_ENTERING = "entering"; field public static final java.lang.String KEY_STATUS_CHANGED = "status"; + field public static final java.lang.String MODE_CHANGED_ACTION = "android.location.MODE_CHANGED"; field public static final java.lang.String NETWORK_PROVIDER = "network"; field public static final java.lang.String PASSIVE_PROVIDER = "passive"; field public static final java.lang.String PROVIDERS_CHANGED_ACTION = "android.location.PROVIDERS_CHANGED"; diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 9613df3ca275..49945f0d58f8 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -247,6 +247,7 @@ + diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index e5f1cf5e43d8..14b812e8b284 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -152,12 +152,24 @@ public class LocationManager { /** * Broadcast intent action when the configured location providers - * change. + * change. 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. + * + * In the future, there may be mode changes that do not result in + * {@link #PROVIDERS_CHANGED_ACTION} broadcasts. + */ + public static final String MODE_CHANGED_ACTION = "android.location.MODE_CHANGED"; + + /** * Broadcast intent action indicating that the GPS has either started or * stopped receiving GPS fixes. An intent extra provides this state as a * boolean, where {@code true} means that the GPS is actively receiving fixes. diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index 95c768fe5327..de29155a8f95 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -1156,6 +1156,8 @@ public class LocationManagerService extends ILocationManager.Stub { if (changesMade) { mContext.sendBroadcastAsUser(new Intent(LocationManager.PROVIDERS_CHANGED_ACTION), UserHandle.ALL); + mContext.sendBroadcastAsUser(new Intent(LocationManager.MODE_CHANGED_ACTION), + UserHandle.ALL); } } -- 2.11.0