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.compat.CompatibilityChangeConfig;
|
||||||
import com.android.internal.util.HexDump;
|
import com.android.internal.util.HexDump;
|
||||||
import com.android.internal.util.MemInfoReader;
|
import com.android.internal.util.MemInfoReader;
|
||||||
import com.android.internal.util.Preconditions;
|
|
||||||
import com.android.server.compat.PlatformCompat;
|
import com.android.server.compat.PlatformCompat;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
@@ -1734,7 +1733,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void switchUserAndWaitForComplete(int userId) throws RemoteException {
|
private boolean switchUserAndWaitForComplete(int userId) throws RemoteException {
|
||||||
// Register switch observer.
|
// Register switch observer.
|
||||||
final CountDownLatch switchLatch = new CountDownLatch(1);
|
final CountDownLatch switchLatch = new CountDownLatch(1);
|
||||||
mInterface.registerUserSwitchObserver(
|
mInterface.registerUserSwitchObserver(
|
||||||
@@ -1748,7 +1747,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
|
|||||||
}, ActivityManagerShellCommand.class.getName());
|
}, ActivityManagerShellCommand.class.getName());
|
||||||
|
|
||||||
// Switch.
|
// Switch.
|
||||||
mInterface.switchUser(userId);
|
boolean switched = mInterface.switchUser(userId);
|
||||||
|
|
||||||
// Wait.
|
// Wait.
|
||||||
try {
|
try {
|
||||||
@@ -1756,6 +1755,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
|
|||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
getErrPrintWriter().println("Thread interrupted unexpectedly.");
|
getErrPrintWriter().println("Thread interrupted unexpectedly.");
|
||||||
}
|
}
|
||||||
|
return switched;
|
||||||
}
|
}
|
||||||
|
|
||||||
int runSwitchUser(PrintWriter pw) throws RemoteException {
|
int runSwitchUser(PrintWriter pw) throws RemoteException {
|
||||||
@@ -1777,12 +1777,18 @@ final class ActivityManagerShellCommand extends ShellCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int userId = Integer.parseInt(getNextArgRequired());
|
int userId = Integer.parseInt(getNextArgRequired());
|
||||||
|
boolean switched;
|
||||||
if (wait) {
|
if (wait) {
|
||||||
switchUserAndWaitForComplete(userId);
|
switched = switchUserAndWaitForComplete(userId);
|
||||||
} else {
|
} else {
|
||||||
mInterface.switchUser(userId);
|
switched = mInterface.switchUser(userId);
|
||||||
}
|
}
|
||||||
|
if (switched) {
|
||||||
return 0;
|
return 0;
|
||||||
|
} else {
|
||||||
|
pw.printf("Failed to switch to user %d\n", userId);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int runGetCurrentUser(PrintWriter pw) throws RemoteException {
|
int runGetCurrentUser(PrintWriter pw) throws RemoteException {
|
||||||
|
|||||||
Reference in New Issue
Block a user