summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/LocationManagerService.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2013-02-06 23:14:49 -0800
committerDianne Hackborn <hackbod@google.com>2013-02-06 23:59:56 -0800
commitc2293025a25e04b26bf53713d71f85fd9ca5e8e9 (patch)
tree0a29790db261fd32404ea9aecfba5bc53e81fe57 /services/java/com/android/server/LocationManagerService.java
parent0984780bc7aed76018b9f88c0d9c3ce300bde39a (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.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 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);