summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fyodor Kupolov <fkupolov@google.com> 2016-03-11 23:25:09 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-03-11 23:25:10 +0000
commit89f1622e48206d2f8ebd9af9c32449f1f8eab7d1 (patch)
treee6bb73b721649e54a3e5ae54ab41564d6257e449
parent026cf53fe46a3da512088212f22a2989993eb963 (diff)
parentb5690bc3086af1d1f064a080c728090de24d6f96 (diff)
Merge "Added logoutCurrentUser method" into nyc-dev
-rw-r--r--core/java/android/app/ActivityManager.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java12
2 files changed, 19 insertions, 10 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 2f6907e3f31e..2d33a2c8450f 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -3329,6 +3329,23 @@ public class ActivityManager {
}
}
+ /**
+ * Logs out current current foreground user by switching to the system user and stopping the
+ * user being switched from.
+ * @hide
+ */
+ public static void logoutCurrentUser() {
+ int currentUser = ActivityManager.getCurrentUser();
+ if (currentUser != UserHandle.USER_SYSTEM) {
+ try {
+ ActivityManagerNative.getDefault().switchUser(UserHandle.USER_SYSTEM);
+ ActivityManagerNative.getDefault().stopUser(currentUser, /* force= */ false, null);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+ }
+
/** {@hide} */
public static final int FLAG_OR_STOPPED = 1 << 0;
/** {@hide} */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
index cedc3c7eef2f..ab44b6a277ee 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
@@ -315,8 +315,8 @@ public class UserSwitcherController {
public void logoutCurrentUser() {
int currentUser = ActivityManager.getCurrentUser();
if (currentUser != UserHandle.USER_SYSTEM) {
- switchToUserId(UserHandle.USER_SYSTEM);
- stopUserId(currentUser);
+ pauseRefreshUsers();
+ ActivityManager.logoutCurrentUser();
}
}
@@ -384,14 +384,6 @@ public class UserSwitcherController {
}
}
- private void stopUserId(int id) {
- try {
- ActivityManagerNative.getDefault().stopUser(id, /* force= */ false, null);
- } catch (RemoteException e) {
- Log.e(TAG, "Couldn't stop user.", e);
- }
- }
-
private void showExitGuestDialog(int id) {
if (mExitGuestDialog != null && mExitGuestDialog.isShowing()) {
mExitGuestDialog.cancel();