Merge "Disabled DevicePolicyManager.setLocationEnabled() for automotive." into sc-dev
This commit is contained in:
@@ -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.
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user