From c820cc5fb1eb036e76d60a25f151cbd91485feb3 Mon Sep 17 00:00:00 2001 From: Tony Mak Date: Tue, 3 May 2016 18:58:28 +0100 Subject: [PATCH] New settings key and policy transparency for managed profile settings Bug: 28281560 Change-Id: I38d0c202088df410a28e78800de4e74377ec3216 --- core/java/android/provider/Settings.java | 8 +++++ .../android/settingslib/RestrictedLockUtils.java | 39 ++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 700c2d28b3dd..98d6d6e87e9c 100755 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -6152,6 +6152,14 @@ public final class Settings { public static final int VR_DISPLAY_MODE_OFF = 1; /** + * Whether parent user can access remote contact in managed profile. + * + * @hide + */ + public static final String MANAGED_PROFILE_CONTACT_REMOTE_SEARCH = + "managed_profile_contact_remote_search"; + + /** * This are the settings to be backed up. * * NOTE: Settings are backed up and restored in the order they appear diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java index 59637bee2e87..3c32615d5b05 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java @@ -272,6 +272,29 @@ public class RestrictedLockUtils { return null; } + /** + * @param context + * @param userId user id of a managed profile. + * @return is remote contacts search disallowed. + */ + public static EnforcedAdmin checkIfRemoteContactSearchDisallowed(Context context, int userId) { + DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService( + Context.DEVICE_POLICY_SERVICE); + if (dpm == null) { + return null; + } + EnforcedAdmin admin = getProfileOwner(context, userId); + if (admin == null) { + return null; + } + UserHandle userHandle = UserHandle.of(userId); + if (dpm.getCrossProfileContactsSearchDisabled(userHandle) + && dpm.getCrossProfileCallerIdDisabled(userHandle)) { + return admin; + } + return null; + } + public static EnforcedAdmin checkIfAccessibilityServiceDisallowed(Context context, String packageName, int userId) { DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService( @@ -536,6 +559,22 @@ public class RestrictedLockUtils { return null; } + private static EnforcedAdmin getProfileOwner(Context context, int userId) { + if (userId == UserHandle.USER_NULL) { + return null; + } + final DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService( + Context.DEVICE_POLICY_SERVICE); + if (dpm == null) { + return null; + } + ComponentName adminComponent = dpm.getProfileOwnerAsUser(userId); + if (adminComponent != null) { + return new EnforcedAdmin(adminComponent, userId); + } + return null; + } + /** * Set the menu item as disabled by admin by adding a restricted padlock at the end of the * text and set the click listener which will send an intent to show the admin support details -- 2.11.0