From b5690bc3086af1d1f064a080c728090de24d6f96 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Wed, 2 Mar 2016 17:50:58 -0800 Subject: Added logoutCurrentUser method Bug: 27299227 Change-Id: I01bad3ec364061236c6a76044062144462336910 --- core/java/android/app/ActivityManager.java | 17 +++++++++++++++++ .../statusbar/policy/UserSwitcherController.java | 12 ++---------- 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(); -- cgit v1.2.3-59-g8ed1b