ActivityManagerShellCommand calls getUserSwitchability with wrong user

UserManager.getUserSwitchability API is always called with userId 0
from ActivityManagerShellCommand. This CL fixes that issue by passing
the userId parameter came from the command line to the API.

Bug: 261857907
Test: adb shell am switch-user -w 10
Change-Id: I3d6fa18f63f4b6e01acbf197cfcb5cedb614925c
This commit is contained in:
Yasin Kilicdere
2022-12-08 16:35:12 +00:00
parent 45287079e7
commit ec5aa8f126

View File

@@ -2006,12 +2006,6 @@ final class ActivityManagerShellCommand extends ShellCommand {
}
int runSwitchUser(PrintWriter pw) throws RemoteException {
UserManager userManager = mInternal.mContext.getSystemService(UserManager.class);
final int userSwitchable = userManager.getUserSwitchability();
if (userSwitchable != UserManager.SWITCHABILITY_STATUS_OK) {
getErrPrintWriter().println("Error: " + userSwitchable);
return -1;
}
boolean wait = false;
String opt;
while ((opt = getNextOption()) != null) {
@@ -2024,6 +2018,14 @@ final class ActivityManagerShellCommand extends ShellCommand {
}
int userId = Integer.parseInt(getNextArgRequired());
UserManager userManager = mInternal.mContext.getSystemService(UserManager.class);
final int userSwitchable = userManager.getUserSwitchability(UserHandle.of(userId));
if (userSwitchable != UserManager.SWITCHABILITY_STATUS_OK) {
getErrPrintWriter().println("Error: UserSwitchabilityResult=" + userSwitchable);
return -1;
}
boolean switched;
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "shell_runSwitchUser");
try {