diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java index 4eb4f7d0cda..274ce59608f 100644 --- a/src/com/android/settings/notification/SoundSettings.java +++ b/src/com/android/settings/notification/SoundSettings.java @@ -169,7 +169,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab } catch (IllegalArgumentException ignored) { isCellBroadcastAppLinkEnabled = false; // CMAS app not installed } - if (!mUserManager.isAdminUser() || !isCellBroadcastAppLinkEnabled) { + if (!mUserManager.isAdminUser() || !isCellBroadcastAppLinkEnabled || + RestrictedLockUtils.hasBaseUserRestriction(mContext, + UserManager.DISALLOW_CONFIG_CELL_BROADCASTS, UserHandle.myUserId())) { removePreference(KEY_CELL_BROADCAST_SETTINGS); } initRingtones(); @@ -193,12 +195,15 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_ADJUST_VOLUME, UserHandle.myUserId()); + final boolean hasBaseRestriction = RestrictedLockUtils.hasBaseUserRestriction(mContext, + UserManager.DISALLOW_ADJUST_VOLUME, UserHandle.myUserId()); for (String key : RESTRICTED_KEYS) { Preference pref = findPreference(key); - if (pref instanceof RestrictedPreference) { + if (pref != null) { + pref.setEnabled(!hasBaseRestriction); + } + if (pref instanceof RestrictedPreference && !hasBaseRestriction) { ((RestrictedPreference) pref).setDisabledByAdmin(admin); - } else if (pref != null) { - pref.setEnabled(admin == null); } } RestrictedPreference broadcastSettingsPref = (RestrictedPreference) findPreference( diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 8ff26f78b65..a8712972e0f 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -767,7 +767,9 @@ public class UserSettings extends SettingsPreferenceFragment } // Check if Guest tile should be added. - if (!mUserCaps.mIsGuest && (mUserCaps.mCanAddGuest || mUserCaps.mDisallowAddUser)) { + if (!mUserCaps.mIsGuest && (mUserCaps.mCanAddGuest || + mUserCaps.mDisallowAddUserSetByAdmin)) { + // Add a virtual Guest user for guest defaults UserPreference pref = new UserPreference(getPrefContext(), null, UserPreference.USERID_GUEST_DEFAULTS, mUserCaps.mIsAdmin && voiceCapable? this : null /* settings icon handler */, @@ -810,7 +812,7 @@ public class UserSettings extends SettingsPreferenceFragment } // Append Add user to the end of the list - if (mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUser) { + if (mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin) { boolean moreUsers = mUserManager.canAddMoreUsers(); mAddUser.setOrder(Preference.DEFAULT_ORDER); preferenceScreen.addPreference(mAddUser); @@ -825,7 +827,8 @@ public class UserSettings extends SettingsPreferenceFragment mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null); } } - if (mUserCaps.mIsAdmin) { + if (mUserCaps.mIsAdmin && + (!mUserCaps.mDisallowAddUser || mUserCaps.mDisallowAddUserSetByAdmin)) { mLockScreenSettings.setOrder(Preference.DEFAULT_ORDER); preferenceScreen.addPreference(mLockScreenSettings); mAddUserWhenLocked.setChecked(Settings.Global.getInt(getContentResolver(), @@ -1006,6 +1009,7 @@ public class UserSettings extends SettingsPreferenceFragment boolean mIsGuest; boolean mCanAddGuest; boolean mDisallowAddUser; + boolean mDisallowAddUserSetByAdmin; EnforcedAdmin mEnforcedAdmin; private UserCapabilities() {} @@ -1023,7 +1027,12 @@ public class UserSettings extends SettingsPreferenceFragment caps.mIsAdmin = myUserInfo.isAdmin(); caps.mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(context, UserManager.DISALLOW_ADD_USER, UserHandle.myUserId()); - caps.mDisallowAddUser = (caps.mEnforcedAdmin != null); + final boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction( + context, UserManager.DISALLOW_ADD_USER, UserHandle.myUserId()); + caps.mDisallowAddUserSetByAdmin = + caps.mEnforcedAdmin != null && !hasBaseUserRestriction; + caps.mDisallowAddUser = + (caps.mEnforcedAdmin != null || hasBaseUserRestriction); if (!caps.mIsAdmin || UserManager.getMaxSupportedUsers() < 2 || !UserManager.supportsMultipleUsers() || caps.mDisallowAddUser) { @@ -1103,7 +1112,7 @@ public class UserSettings extends SettingsPreferenceFragment data.screenTitle = res.getString(R.string.user_settings_title); result.add(data); - if (userCaps.mCanAddUser || userCaps.mDisallowAddUser) { + if (userCaps.mCanAddUser || userCaps.mDisallowAddUserSetByAdmin) { data = new SearchIndexableRaw(context); data.title = res.getString(userCaps.mCanAddRestrictedProfile ? R.string.user_add_user_or_profile_menu