summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/LocationManagerService.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2013-02-07 08:03:13 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-02-07 08:03:14 +0000
commit34e0b05e28b25dbe20c819ad4fa923c716c37e5f (patch)
tree0f58340c8cb0326b225748fa700c88cc1ffb0cd9 /services/java/com/android/server/LocationManagerService.java
parent8949b2480b8d4c99aa7d20508522a42421a9acef (diff)
parentc2293025a25e04b26bf53713d71f85fd9ca5e8e9 (diff)
Merge "App ops: track system windows, monitoring changes."
Diffstat (limited to 'services/java/com/android/server/LocationManagerService.java')
-rw-r--r--services/java/com/android/server/LocationManagerService.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java
index 6bed96466bf8..c8d6ae8721dd 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/java/com/android/server/LocationManagerService.java
@@ -221,6 +221,16 @@ public class LocationManagerService extends ILocationManager.Stub {
mBlacklist.init();
mGeofenceManager = new GeofenceManager(mContext, mBlacklist);
+ // Monitor for app ops mode changes.
+ AppOpsManager.Callback callback = new AppOpsManager.Callback() {
+ public void opChanged(int op, String packageName) {
+ synchronized (mLock) {
+ applyAllProviderRequirementsLocked();
+ }
+ }
+ };
+ mAppOps.startWatchingMode(AppOpsManager.OP_COARSE_LOCATION, null, callback);
+
// prepare providers
loadProvidersLocked();
updateProvidersLocked();
@@ -1345,6 +1355,17 @@ public class LocationManagerService extends ILocationManager.Stub {
}
}
+ private void applyAllProviderRequirementsLocked() {
+ for (LocationProviderInterface p : mProviders) {
+ // If provider is already disabled, don't need to do anything
+ if (!isAllowedBySettingsLocked(p.getName(), UserHandle.getUid(mCurrentUserId, 0))) {
+ continue;
+ }
+
+ applyRequirementsLocked(p.getName());
+ }
+ }
+
@Override
public Location getLastLocation(LocationRequest request, String packageName) {
if (D) Log.d(TAG, "getLastLocation: " + request);