Merge "Only notify when admin enables location for the user" into rvc-dev

This commit is contained in:
Eran Messeri
2020-05-28 12:32:21 +00:00
committed by Android (Google) Code Review

View File

@@ -11951,11 +11951,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
user); user);
mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled, user); mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled, user);
// make a best effort to only show the notification if the admin is actually changing // make a best effort to only show the notification if the admin is actually enabling
// something. this is subject to race conditions with settings changes, but those are // location. this is subject to race conditions with settings changes, but those are
// unlikely to realistically interfere // unlikely to realistically interfere
if (wasLocationEnabled != locationEnabled) { if (locationEnabled && (wasLocationEnabled != locationEnabled)) {
showLocationSettingsChangedNotification(user); showLocationSettingsEnabledNotification(user);
} }
}); });
@@ -11968,7 +11968,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
.write(); .write();
} }
private void showLocationSettingsChangedNotification(UserHandle user) { private void showLocationSettingsEnabledNotification(UserHandle user) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS) Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Fill the component explicitly to prevent the PendingIntent from being intercepted // Fill the component explicitly to prevent the PendingIntent from being intercepted
@@ -12100,8 +12100,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
saveSettingsLocked(callingUserId); saveSettingsLocked(callingUserId);
} }
mInjector.settingsSecurePutStringForUser(setting, value, callingUserId); mInjector.settingsSecurePutStringForUser(setting, value, callingUserId);
if (setting.equals(Settings.Secure.LOCATION_MODE)) { // Notify the user if it's the location mode setting that's been set, to any value
showLocationSettingsChangedNotification(UserHandle.of(callingUserId)); // other than 'off'.
if (setting.equals(Settings.Secure.LOCATION_MODE)
&& (Integer.parseInt(value) != 0)) {
showLocationSettingsEnabledNotification(UserHandle.of(callingUserId));
} }
}); });
} }