Do not use UM.setUserRestrictions() in Settings

Change-Id: I014fe939f3495521a813eadbb7353956afc3feb4
This commit is contained in:
Makoto Onuki
2015-10-15 14:20:03 -07:00
parent 5c59606e7c
commit b761ad1c6e
2 changed files with 13 additions and 8 deletions

View File

@@ -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<UserInfo> 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 {