From c1cc9fefa8a4c2255c64e67402ec7ebfc076f5d6 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Fri, 30 Jun 2017 11:29:40 -0400 Subject: [PATCH] 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 --- .../android/settings/users/UserSettings.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 5cb27f9f257..bef2e9ab7df 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -725,6 +725,7 @@ public class UserSettings extends SettingsPreferenceFragment final boolean voiceCapable = Utils.isVoiceCapable(context); final ArrayList missingIcons = new ArrayList<>(); final ArrayList 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