Improved 'am switch' to handle errors.
Bug: 146207078 Test: adb shell am switch-user 42 ; echo $? Change-Id: I005c76652be1fd0908f5c2b40e2513362b5ce5ac
This commit is contained in:
@@ -91,7 +91,6 @@ import android.view.Display;
|
||||
import com.android.internal.compat.CompatibilityChangeConfig;
|
||||
import com.android.internal.util.HexDump;
|
||||
import com.android.internal.util.MemInfoReader;
|
||||
import com.android.internal.util.Preconditions;
|
||||
import com.android.server.compat.PlatformCompat;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
@@ -1734,7 +1733,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(
|
||||
@@ -1748,7 +1747,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
|
||||
}, ActivityManagerShellCommand.class.getName());
|
||||
|
||||
// Switch.
|
||||
mInterface.switchUser(userId);
|
||||
boolean switched = mInterface.switchUser(userId);
|
||||
|
||||
// Wait.
|
||||
try {
|
||||
@@ -1756,6 +1755,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
|
||||
} catch (InterruptedException e) {
|
||||
getErrPrintWriter().println("Thread interrupted unexpectedly.");
|
||||
}
|
||||
return switched;
|
||||
}
|
||||
|
||||
int runSwitchUser(PrintWriter pw) throws RemoteException {
|
||||
@@ -1777,12 +1777,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 {
|
||||
|
||||
Reference in New Issue
Block a user