diff --git a/src/com/android/settings/users/RestrictionUtils.java b/src/com/android/settings/users/RestrictionUtils.java index b36cb3e5432..fbdc7596334 100644 --- a/src/com/android/settings/users/RestrictionUtils.java +++ b/src/com/android/settings/users/RestrictionUtils.java @@ -78,16 +78,17 @@ public class RestrictionUtils { public static void setRestrictions(Context context, ArrayList entries, UserHandle user) { UserManager um = UserManager.get(context); - Bundle userRestrictions = um.getUserRestrictions(user); for (RestrictionEntry entry : entries) { - userRestrictions.putBoolean(entry.getKey(), !entry.getSelectedState()); + um.setUserRestriction(entry.getKey(), !entry.getSelectedState()); + + // TODO This will no longer be needed once b/23902097 is fixed. um.setUserRestriction + // should do it. if (entry.getKey().equals(UserManager.DISALLOW_SHARE_LOCATION) && !entry.getSelectedState()) { Secure.putIntForUser(context.getContentResolver(), Secure.LOCATION_MODE, Secure.LOCATION_MODE_OFF, user.getIdentifier()); } } - um.setUserRestrictions(userRestrictions, user); } } diff --git a/src/com/android/settings/users/UserDetailsSettings.java b/src/com/android/settings/users/UserDetailsSettings.java index 8bfa48d70e5..0dc87aaf2bd 100644 --- a/src/com/android/settings/users/UserDetailsSettings.java +++ b/src/com/android/settings/users/UserDetailsSettings.java @@ -123,7 +123,8 @@ public class UserDetailsSettings extends SettingsPreferenceFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (Boolean.TRUE.equals(newValue)) { - showDialog(mGuestUser? DIALOG_CONFIRM_ENABLE_CALLING : DIALOG_CONFIRM_ENABLE_CALLING_AND_SMS); + showDialog(mGuestUser ? DIALOG_CONFIRM_ENABLE_CALLING + : DIALOG_CONFIRM_ENABLE_CALLING_AND_SMS); return false; } enableCallsAndSms(false); @@ -137,14 +138,17 @@ public class UserDetailsSettings extends SettingsPreferenceFragment // SMS is always disabled for guest mDefaultGuestRestrictions.putBoolean(UserManager.DISALLOW_SMS, true); mUserManager.setDefaultGuestRestrictions(mDefaultGuestRestrictions); + // Update the guest's restrictions, if there is a guest + // TODO: Maybe setDefaultGuestRestrictions() can internally just set the restrictions + // on any existing guest rather than do it here with multiple Binder calls. List users = mUserManager.getUsers(true); for (UserInfo user: users) { if (user.isGuest()) { - UserHandle userHandle = new UserHandle(user.id); - Bundle userRestrictions = mUserManager.getUserRestrictions(userHandle); - userRestrictions.putAll(mDefaultGuestRestrictions); - mUserManager.setUserRestrictions(userRestrictions, userHandle); + for (String key : mDefaultGuestRestrictions.keySet()) { + mUserManager.setUserRestriction( + key, mDefaultGuestRestrictions.getBoolean(key)); + } } } } else {