Allow clicking on guest user

This is needed since the user switch will be hidden by default in
QS and will show up once multi-user has been activated in some way.

Test: click on guest
Bug: 37152893
Change-Id: I351a5d95e9e8a5e47e388d9f0611924b077754da
This commit is contained in:
Jason Monk
2017-06-30 11:29:40 -04:00
parent 4e34839a1e
commit c1cc9fefa8

View File

@@ -725,6 +725,7 @@ public class UserSettings extends SettingsPreferenceFragment
final boolean voiceCapable = Utils.isVoiceCapable(context);
final ArrayList<Integer> missingIcons = new ArrayList<>();
final ArrayList<UserPreference> userPreferences = new ArrayList<>();
int guestId = UserPreference.USERID_GUEST_DEFAULTS;
userPreferences.add(mMePreference);
for (UserInfo user : users) {
@@ -738,6 +739,7 @@ public class UserSettings extends SettingsPreferenceFragment
pref = mMePreference;
} else if (user.isGuest()) {
// Skip over Guest. We add generic Guest settings after this loop
guestId = user.id;
continue;
} else {
// With Telephony:
@@ -814,9 +816,23 @@ public class UserSettings extends SettingsPreferenceFragment
userPreferences.add(pref);
pref.setDisabledByAdmin(
mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
if (!pref.isDisabledByAdmin()) {
pref.setSelectable(false);
}
int finalGuestId = guestId;
pref.setOnPreferenceClickListener(preference -> {
int id = finalGuestId;
if (id == UserPreference.USERID_GUEST_DEFAULTS) {
UserInfo guest = mUserManager.createGuest(
getContext(), preference.getTitle().toString());
if (guest != null) {
id = guest.id;
}
}
try {
ActivityManager.getService().switchUser(id);
} catch (RemoteException e) {
e.rethrowFromSystemServer();
}
return true;
});
}
// Sort list of users by serialNum