diff options
| -rw-r--r-- | core/java/android/app/admin/DevicePolicyManager.java | 17 | ||||
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java | 4 |
2 files changed, 19 insertions, 2 deletions
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index a3c615db7eb3..e4e97a172b85 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -30,6 +30,7 @@ import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.content.pm.UserInfo; import android.graphics.Bitmap; import android.net.ProxyInfo; import android.net.Uri; @@ -5346,6 +5347,22 @@ public class DevicePolicyManager { } /** + * Called by the system to obtain a {@link DevicePolicyManager} whose calls act on the parent + * profile. + * + * @hide + */ + public DevicePolicyManager getParentProfileInstance(UserInfo uInfo) { + mContext.checkSelfPermission( + android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS); + if (!uInfo.isManagedProfile()) { + throw new SecurityException("The user " + uInfo.id + + " does not have a parent profile."); + } + return new DevicePolicyManager(mContext, true); + } + + /** * Called by a profile owner of a managed profile to set the color used for customization. * This color is used as background color of the confirm credentials screen for that user. * The default color is {@link android.graphics.Color#GRAY}. diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java index d3c1364adac8..ad567d31ec37 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java @@ -178,7 +178,7 @@ public class RestrictedLockUtils { if (userInfo.isManagedProfile()) { // If userInfo.id is a managed profile, we also need to look at // the policies set on the parent. - DevicePolicyManager parentDpm = dpm.getParentProfileInstance(admin); + DevicePolicyManager parentDpm = dpm.getParentProfileInstance(userInfo); if ((parentDpm.getKeyguardDisabledFeatures(admin, userInfo.id) & keyguardFeatures) != 0) { if (enforcedAdmin == null) { @@ -375,7 +375,7 @@ public class RestrictedLockUtils { if (userInfo.isManagedProfile()) { // If userInfo.id is a managed profile, we also need to look at // the policies set on the parent. - DevicePolicyManager parentDpm = dpm.getParentProfileInstance(admin); + DevicePolicyManager parentDpm = dpm.getParentProfileInstance(userInfo); if (parentDpm.getMaximumTimeToLock(admin, userInfo.id) > 0) { if (enforcedAdmin == null) { enforcedAdmin = new EnforcedAdmin(admin, userInfo.id); |