diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java index e7d6eb7bb46ba..3f0e2ce9ed133 100644 --- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java +++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java @@ -1759,7 +1759,7 @@ final class ActivityManagerShellCommand extends ShellCommand { return 0; } - private void switchUserAndWaitForComplete(int userId) throws RemoteException { + private boolean switchUserAndWaitForComplete(int userId) throws RemoteException { // Register switch observer. final CountDownLatch switchLatch = new CountDownLatch(1); mInterface.registerUserSwitchObserver( @@ -1773,7 +1773,7 @@ final class ActivityManagerShellCommand extends ShellCommand { }, ActivityManagerShellCommand.class.getName()); // Switch. - mInterface.switchUser(userId); + boolean switched = mInterface.switchUser(userId); // Wait. try { @@ -1781,6 +1781,7 @@ final class ActivityManagerShellCommand extends ShellCommand { } catch (InterruptedException e) { getErrPrintWriter().println("Thread interrupted unexpectedly."); } + return switched; } int runSwitchUser(PrintWriter pw) throws RemoteException { @@ -1802,12 +1803,18 @@ final class ActivityManagerShellCommand extends ShellCommand { } int userId = Integer.parseInt(getNextArgRequired()); + boolean switched; if (wait) { - switchUserAndWaitForComplete(userId); + switched = switchUserAndWaitForComplete(userId); } else { - mInterface.switchUser(userId); + switched = mInterface.switchUser(userId); + } + if (switched) { + return 0; + } else { + pw.printf("Failed to switch to user %d\n", userId); + return 1; } - return 0; } int runGetCurrentUser(PrintWriter pw) throws RemoteException {