From b761ad1c6eefe153eb674d712ab444cee1b7b865 Mon Sep 17 00:00:00 2001 From: Makoto Onuki Date: Thu, 15 Oct 2015 14:20:03 -0700 Subject: [PATCH] Do not use UM.setUserRestrictions() in Settings Change-Id: I014fe939f3495521a813eadbb7353956afc3feb4 --- .../android/settings/users/RestrictionUtils.java | 7 ++++--- .../settings/users/UserDetailsSettings.java | 14 +++++++++----- 2 files changed, 13 insertions(+), 8 deletions(-) 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 f94e3e4633f..facfecdf121 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 {