From 582d9111d76632027fed7af10d05d4b44df16c0c Mon Sep 17 00:00:00 2001 From: Jason Monk <jmonk@google.com> Date: Wed, 9 Jul 2014 19:57:08 -0400 Subject: Add API for device owner to switch users Once verified that caller is device owner just calls through to the activity manager and acts like that call. Change-Id: I34023313cd6742b73d2105655ec6b631879aa37a --- .../devicepolicy/DevicePolicyManagerService.java | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'services/devicepolicy/java') diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 61f09f6..5445dc0 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -3592,6 +3592,30 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } @Override + public boolean switchUser(ComponentName who, UserHandle userHandle) { + synchronized (this) { + if (who == null) { + throw new NullPointerException("ComponentName is null"); + } + getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER); + + long id = Binder.clearCallingIdentity(); + try { + int userId = UserHandle.USER_OWNER; + if (userHandle != null) { + userId = userHandle.getIdentifier(); + } + return ActivityManagerNative.getDefault().switchUser(userId); + } catch (RemoteException e) { + Log.e(LOG_TAG, "Couldn't switch user", e); + return false; + } finally { + restoreCallingIdentity(id); + } + } + } + + @Override public Bundle getApplicationRestrictions(ComponentName who, String packageName) { final UserHandle userHandle = new UserHandle(UserHandle.getCallingUserId()); -- cgit v1.1