diff options
author | Dianne Hackborn <hackbod@google.com> | 2013-02-06 23:14:49 -0800 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2013-02-06 23:59:56 -0800 |
commit | c2293025a25e04b26bf53713d71f85fd9ca5e8e9 (patch) | |
tree | 0a29790db261fd32404ea9aecfba5bc53e81fe57 /services/java/com/android/server/LocationManagerService.java | |
parent | 0984780bc7aed76018b9f88c0d9c3ce300bde39a (diff) |
App ops: track system windows, monitoring changes.
Change-Id: I273e82bdad66ada3bf0f7ec9176bc304b9ee1ee8
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 62f996558bc1..78699fb10951 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(); @@ -1335,6 +1345,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); |