diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java index e8772df8fe3eb..0937c46a17960 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java @@ -102,7 +102,7 @@ class QuickSettings { private int mBrightnessDialogShortTimeout; private int mBrightnessDialogLongTimeout; - private AsyncTask> mUserInfoTask; + private AsyncTask> mUserInfoTask; private LevelListDrawable mBatteryLevels; private LevelListDrawable mChargingBatteryLevels; @@ -203,35 +203,43 @@ class QuickSettings { final int userId = userInfo.id; final Context context = currentUserContext; - mUserInfoTask = new AsyncTask>() { + mUserInfoTask = new AsyncTask>() { @Override - protected Pair doInBackground(Void... params) { - Cursor cursor = context.getContentResolver().query( + protected Pair doInBackground(Void... params) { + final Cursor cursor = context.getContentResolver().query( Profile.CONTENT_URI, new String[] {Phone._ID, Phone.DISPLAY_NAME}, null, null, null); + final UserManager um = + (UserManager) mContext.getSystemService(Context.USER_SERVICE); - if (cursor == null) { - // Info not available. Should become available later. - return new Pair(null, null); + // Fall back to the UserManager nickname if we can't read the name from the local + // profile below. + String nickName = um.getUserName(); + String name = nickName; + Drawable avatar = null; + Bitmap rawAvatar = um.getUserIcon(userId); + if (rawAvatar != null) { + avatar = new BitmapDrawable(mContext.getResources(), rawAvatar); + } else { + avatar = mContext.getResources().getDrawable(R.drawable.ic_qs_default_user); } - String name = null; - try { - if (cursor.moveToFirst()) { - name = cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME)); + // Try and read the display name from the local profile + if (cursor != null) { + try { + if (cursor.moveToFirst()) { + name = cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME)); + } + } finally { + cursor.close(); } - } finally { - cursor.close(); } - final UserManager userManager = - (UserManager) mContext.getSystemService(Context.USER_SERVICE); - final BitmapDrawable icon = new BitmapDrawable(mContext.getResources(), - userManager.getUserIcon(userId)); - return new Pair(name, icon); + + return new Pair(name, avatar); } @Override - protected void onPostExecute(Pair result) { + protected void onPostExecute(Pair result) { super.onPostExecute(result); mModel.setUserTileInfo(result.first, result.second); mUserInfoTask = null; @@ -305,9 +313,7 @@ class QuickSettings { ImageView iv = (ImageView) view.findViewById(R.id.user_imageview); TextView tv = (TextView) view.findViewById(R.id.user_textview); tv.setText(state.label); - if (us.avatar != null) { - iv.setImageDrawable(us.avatar); - } + iv.setImageDrawable(us.avatar); view.setContentDescription(mContext.getString( R.string.accessibility_quick_settings_user, state.label)); }