Merge "Disabled DevicePolicyManager.setLocationEnabled() for automotive." into sc-dev

This commit is contained in:
Felipe Leme
2021-04-28 16:31:45 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 4 deletions

View File

@@ -10368,6 +10368,9 @@ public class DevicePolicyManager {
/** /**
* Called by device owners to set the user's global location setting. * Called by device owners to set the user's global location setting.
* *
* <p><b>Note: </b> this call is ignored on
* {@link android.content.pm.PackageManager#FEATURE_AUTOMOTIVE automotive builds}.
*
* @param admin Which {@link DeviceAdminReceiver} this request is associated with * @param admin Which {@link DeviceAdminReceiver} this request is associated with
* @param locationEnabled whether location should be enabled or disabled * @param locationEnabled whether location should be enabled or disabled
* @throws SecurityException if {@code admin} is not a device owner. * @throws SecurityException if {@code admin} is not a device owner.

View File

@@ -11931,17 +11931,25 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
final CallerIdentity caller = getCallerIdentity(who); final CallerIdentity caller = getCallerIdentity(who);
Preconditions.checkCallAuthorization(isDeviceOwner(caller)); Preconditions.checkCallAuthorization(isDeviceOwner(caller));
UserHandle userHandle = caller.getUserHandle();
if (mIsAutomotive) {
Slogf.v(LOG_TAG, "setLocationEnabled(%s, %b): ignoring for user %s on automotive build",
who.flattenToShortString(), locationEnabled, userHandle);
return;
}
mInjector.binderWithCleanCallingIdentity(() -> { mInjector.binderWithCleanCallingIdentity(() -> {
boolean wasLocationEnabled = mInjector.getLocationManager().isLocationEnabledForUser( boolean wasLocationEnabled = mInjector.getLocationManager().isLocationEnabledForUser(
caller.getUserHandle()); userHandle);
mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled, Slogf.v(LOG_TAG, "calling locationManager.setLocationEnabledForUser(%b, %s)",
caller.getUserHandle()); locationEnabled, userHandle);
mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled, userHandle);
// make a best effort to only show the notification if the admin is actually enabling // 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 // location. this is subject to race conditions with settings changes, but those are
// unlikely to realistically interfere // unlikely to realistically interfere
if (locationEnabled && !wasLocationEnabled) { if (locationEnabled && !wasLocationEnabled) {
showLocationSettingsEnabledNotification(caller.getUserHandle()); showLocationSettingsEnabledNotification(userHandle);
} }
}); });