summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java17
1 files changed, 10 insertions, 7 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index b7a9ba56c013..8d32d7c970bc 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -11951,11 +11951,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
user);
mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled, user);
- // make a best effort to only show the notification if the admin is actually changing
- // something. this is subject to race conditions with settings changes, but those are
+ // make a best effort to only show the notification if the admin is actually enabling
+ // location. this is subject to race conditions with settings changes, but those are
// unlikely to realistically interfere
- if (wasLocationEnabled != locationEnabled) {
- showLocationSettingsChangedNotification(user);
+ if (locationEnabled && (wasLocationEnabled != locationEnabled)) {
+ showLocationSettingsEnabledNotification(user);
}
});
@@ -11968,7 +11968,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
.write();
}
- private void showLocationSettingsChangedNotification(UserHandle user) {
+ private void showLocationSettingsEnabledNotification(UserHandle user) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Fill the component explicitly to prevent the PendingIntent from being intercepted
@@ -12100,8 +12100,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
saveSettingsLocked(callingUserId);
}
mInjector.settingsSecurePutStringForUser(setting, value, callingUserId);
- if (setting.equals(Settings.Secure.LOCATION_MODE)) {
- showLocationSettingsChangedNotification(UserHandle.of(callingUserId));
+ // Notify the user if it's the location mode setting that's been set, to any value
+ // other than 'off'.
+ if (setting.equals(Settings.Secure.LOCATION_MODE)
+ && (Integer.parseInt(value) != 0)) {
+ showLocationSettingsEnabledNotification(UserHandle.of(callingUserId));
}
});
}