Move the user account querying logic to UserInfoController.
Bug: 28383751
Change-Id: I85985d772b6aa9bfeb4e900854c9150481bddf7a
(cherry picked from commit ad4889c3c70ed042c24eac80f0f304ba67962dc3)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java
index 5b4279c..cc875ac 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java
@@ -96,7 +96,7 @@
}
@Override
- public void onUserInfoChanged(String name, Drawable picture) {
+ public void onUserInfoChanged(String name, Drawable picture, String userAccount) {
mLastUpdate = new Pair<>(name, picture);
refreshState(mLastUpdate);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
index e08b945..2800e2d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
@@ -150,7 +150,7 @@
public void setUserInfoController(UserInfoController userInfoController) {
userInfoController.addListener(new UserInfoController.OnUserInfoChangedListener() {
@Override
- public void onUserInfoChanged(String name, Drawable picture) {
+ public void onUserInfoChanged(String name, Drawable picture, String userAccount) {
mMultiUserAvatar.setImageDrawable(picture);
}
});
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
index 78019ea..dfc0285 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
@@ -395,7 +395,7 @@
}
@Override
- public void onUserInfoChanged(String name, Drawable picture) {
+ public void onUserInfoChanged(String name, Drawable picture, String userAccount) {
mMultiUserAvatar.setImageDrawable(picture);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
index a051973..8d15c65 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
@@ -504,7 +504,7 @@
public void setUserInfoController(UserInfoController userInfoController) {
userInfoController.addListener(new UserInfoController.OnUserInfoChangedListener() {
@Override
- public void onUserInfoChanged(String name, Drawable picture) {
+ public void onUserInfoChanged(String name, Drawable picture, String userAccount) {
mMultiUserAvatar.setImageDrawable(picture);
}
});
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java
index c5a4f5e..4a6e215 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.policy;
+import android.app.ActivityManager;
import android.app.ActivityManagerNative;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -33,7 +34,6 @@
import android.os.UserManager;
import android.provider.ContactsContract;
import android.util.Log;
-import android.util.Pair;
import com.android.internal.util.UserIcons;
import com.android.settingslib.drawable.UserIconDrawable;
@@ -48,10 +48,11 @@
private final Context mContext;
private final ArrayList<OnUserInfoChangedListener> mCallbacks =
new ArrayList<OnUserInfoChangedListener>();
- private AsyncTask<Void, Void, Pair<String, Drawable>> mUserInfoTask;
+ private AsyncTask<Void, Void, UserInfoQueryResult> mUserInfoTask;
private String mUserName;
private Drawable mUserDrawable;
+ private String mUserAccount;
public UserInfoController(Context context) {
mContext = context;
@@ -68,7 +69,7 @@
public void addListener(OnUserInfoChangedListener callback) {
mCallbacks.add(callback);
- callback.onUserInfoChanged(mUserName, mUserDrawable);
+ callback.onUserInfoChanged(mUserName, mUserDrawable, mUserAccount);
}
public void remListener(OnUserInfoChangedListener callback) {
@@ -137,9 +138,10 @@
res.getDimensionPixelSize(R.dimen.multi_user_avatar_keyguard_size));
final Context context = currentUserContext;
- mUserInfoTask = new AsyncTask<Void, Void, Pair<String, Drawable>>() {
+ mUserInfoTask = new AsyncTask<Void, Void, UserInfoQueryResult>() {
+
@Override
- protected Pair<String, Drawable> doInBackground(Void... params) {
+ protected UserInfoQueryResult doInBackground(Void... params) {
final UserManager um = UserManager.get(mContext);
// Fall back to the UserManager nickname if we can't read the name from the local
@@ -175,13 +177,15 @@
}
}
}
- return new Pair<String, Drawable>(name, avatar);
+ String userAccount = um.getUserAccount(userId);
+ return new UserInfoQueryResult(name, avatar, userAccount);
}
@Override
- protected void onPostExecute(Pair<String, Drawable> result) {
- mUserName = result.first;
- mUserDrawable = result.second;
+ protected void onPostExecute(UserInfoQueryResult result) {
+ mUserName = result.getName();
+ mUserDrawable = result.getAvatar();
+ mUserAccount = result.getUserAccount();
mUserInfoTask = null;
notifyChanged();
}
@@ -191,7 +195,7 @@
private void notifyChanged() {
for (OnUserInfoChangedListener listener : mCallbacks) {
- listener.onUserInfoChanged(mUserName, mUserDrawable);
+ listener.onUserInfoChanged(mUserName, mUserDrawable, mUserAccount);
}
}
@@ -200,6 +204,30 @@
}
public interface OnUserInfoChangedListener {
- public void onUserInfoChanged(String name, Drawable picture);
+ public void onUserInfoChanged(String name, Drawable picture, String userAccount);
+ }
+
+ private static class UserInfoQueryResult {
+ private String mName;
+ private Drawable mAvatar;
+ private String mUserAccount;
+
+ public UserInfoQueryResult(String name, Drawable avatar, String userAccount) {
+ mName = name;
+ mAvatar = avatar;
+ mUserAccount = userAccount;
+ }
+
+ public String getName() {
+ return mName;
+ }
+
+ public Drawable getAvatar() {
+ return mAvatar;
+ }
+
+ public String getUserAccount() {
+ return mUserAccount;
+ }
}
}