diff options
author | Dianne Hackborn <hackbod@google.com> | 2013-02-07 08:03:13 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-02-07 08:03:14 +0000 |
commit | 34e0b05e28b25dbe20c819ad4fa923c716c37e5f (patch) | |
tree | 0f58340c8cb0326b225748fa700c88cc1ffb0cd9 /services/java/com/android/server/LocationManagerService.java | |
parent | 8949b2480b8d4c99aa7d20508522a42421a9acef (diff) | |
parent | c2293025a25e04b26bf53713d71f85fd9ca5e8e9 (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.java | 21 |
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); |