From 224650b05f40970c9620fd324f3a944656c6a02f Mon Sep 17 00:00:00 2001 From: Rubin Xu Date: Wed, 29 Jul 2015 17:51:11 +0100 Subject: Set device owner as profile owners on secondary users Only applies to device iniitializer case. Bug: 21800830 Change-Id: Ibbd3200b342839a2d785a3943eabb76747856b36 --- .../managedprovisioning/task/SetDevicePolicyTask.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/com/android/managedprovisioning/task/SetDevicePolicyTask.java b/src/com/android/managedprovisioning/task/SetDevicePolicyTask.java index 4ddf429b..994d151d 100644 --- a/src/com/android/managedprovisioning/task/SetDevicePolicyTask.java +++ b/src/com/android/managedprovisioning/task/SetDevicePolicyTask.java @@ -26,6 +26,7 @@ import android.os.RemoteException; import android.os.UserHandle; import com.android.managedprovisioning.ProvisionLogger; +import com.android.managedprovisioning.Utils; /** * This tasks sets a given component as the owner of the device. If provided it also sets a given @@ -73,12 +74,24 @@ public class SetDevicePolicyTask { setDeviceOwner(mAdminPackage, mOwnerName); if (mInitializerComponent != null) { + // For secondary users, set device owner package as profile owner as well, in order + // to give it DO/PO privileges. This only applies if device initializer is present. + if (!Utils.isCurrentUserOwner() && !Utils.isManagedProfile(mContext)) { + int userId = UserHandle.myUserId(); + if (!mDevicePolicyManager.setProfileOwner(mAdminComponent, mAdminPackage, + userId)) { + ProvisionLogger.loge("Fail to set profile owner for user " + userId); + mCallback.onError(ERROR_OTHER); + return; + } + } enableDevicePolicyApp(mInitializerPackageName); setActiveAdmin(mInitializerComponent); if (!setDeviceInitializer(mInitializerComponent)) { // error reported in setDeviceInitializer return; } + } } catch (Exception e) { ProvisionLogger.loge("Failure setting device owner or initializer", e); -- cgit v1.2.3