Fix call to get the current user id from a secondary SystemUI process.
- The secondary SystemUI process's KeyguardUpdateMonitor is not updated
so we can't rely on it to get the current user id.
Bug: 38372598
Test: Switch users, launch some tasks, and switch back. Ensure that original
tasks still exist
Change-Id: I26a7c70b5f7032a106dc1342c8b366e4797e8fa0
(cherry picked from commit d664269d58bde69b4b8cd371084dc1ed40956978)
diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
index f85fb34..e5ca4a6 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
@@ -1023,7 +1023,12 @@
* Returns the current user id.
*/
public int getCurrentUser() {
- return KeyguardUpdateMonitor.getCurrentUser();
+ if (mAm == null) return 0;
+
+ // This must call through ActivityManager, as the SystemServicesProxy can be called in a
+ // secondary user's SystemUI process, and KeyguardUpdateMonitor is only updated in the
+ // primary user's SystemUI process
+ return mAm.getCurrentUser();
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java
index 7ee0906..a5d41a4 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java
@@ -87,7 +87,7 @@
mCurrentQuietProfiles.clear();
if (currentUserId == UserHandle.USER_CURRENT) {
- currentUserId = KeyguardUpdateMonitor.getCurrentUser();
+ currentUserId = SystemServicesProxy.getInstance(mContext).getCurrentUser();
}
UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
List<UserInfo> profiles = userManager.getProfiles(currentUserId);