After deleting guest user, switch back to previous instead of user0.
In Setting, after deleting or exiting the guest user, or failure to reset the guest user involves switching back to user0, which is not possible with HSUM (headless system user mode). With this CL we're now switching back to previous foreground user instead of system user. Bug: 283106632 Test: manual Change-Id: Id60063cca75d9fded7dfe0b7d7a4b871d67c4b0c
This commit is contained in:
@@ -977,10 +977,10 @@ public class UserSettings extends SettingsPreferenceFragment
|
||||
return;
|
||||
}
|
||||
try {
|
||||
getContext().getSystemService(UserManager.class)
|
||||
.removeUserWhenPossible(UserHandle.of(UserHandle.myUserId()),
|
||||
/* overrideDevicePolicy= */ false);
|
||||
ActivityManager.getService().switchUser(UserHandle.USER_SYSTEM);
|
||||
mUserManager.removeUserWhenPossible(
|
||||
UserHandle.of(UserHandle.myUserId()), /* overrideDevicePolicy= */ false);
|
||||
ActivityManager.getService().switchUser(
|
||||
mUserManager.getPreviousForegroundUser().getIdentifier());
|
||||
} catch (RemoteException re) {
|
||||
Log.e(TAG, "Unable to remove self user");
|
||||
}
|
||||
@@ -1099,7 +1099,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
||||
}
|
||||
mMetricsFeatureProvider.action(getActivity(),
|
||||
SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED);
|
||||
switchToUserId(UserHandle.USER_SYSTEM);
|
||||
switchToUserId(mUserManager.getPreviousForegroundUser().getIdentifier());
|
||||
}
|
||||
|
||||
private int createGuest() {
|
||||
@@ -1139,8 +1139,8 @@ public class UserSettings extends SettingsPreferenceFragment
|
||||
// Create a new guest in the foreground, and then immediately switch to it
|
||||
int newGuestUserId = createGuest();
|
||||
if (newGuestUserId == UserHandle.USER_NULL) {
|
||||
Log.e(TAG, "Could not create new guest, switching back to system user");
|
||||
switchToUserId(UserHandle.USER_SYSTEM);
|
||||
Log.e(TAG, "Could not create new guest, switching back to previous user");
|
||||
switchToUserId(mUserManager.getPreviousForegroundUser().getIdentifier());
|
||||
mUserManager.removeUser(oldGuestUserId);
|
||||
WindowManagerGlobal.getWindowManagerService().lockNow(/* options= */ null);
|
||||
return;
|
||||
|
Reference in New Issue
Block a user