From f99727cb878f9709f6c0263c0283257decbaebad Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Wed, 17 Sep 2014 16:15:07 +0200 Subject: [PATCH] Don't crash if a user can't be created Bug: 17543257 Change-Id: I3ef4ac1524a0e23b4ce1d77c4c05c97f061adc97 --- .../policy/UserSwitcherController.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) 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 e8f35fd77bf93..bbe6622d1e810 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java @@ -227,7 +227,14 @@ public class UserSwitcherController { int id; if (record.isGuest && record.info == null) { // No guest user. Create one. - id = mUserManager.createGuest(mContext, mContext.getString(R.string.guest_nickname)).id; + UserInfo guest = mUserManager.createGuest( + mContext, mContext.getString(R.string.guest_nickname)); + if (guest == null) { + // Couldn't create guest, most likely because there already exists one, we just + // haven't reloaded the user list yet. + return; + } + id = guest.id; } else if (record.isAddUser) { showAddUserDialog(); return; @@ -564,8 +571,14 @@ public class UserSwitcherController { cancel(); } else { dismiss(); - int id = mUserManager.createUser( - mContext.getString(R.string.user_new_user_name), 0 /* flags */).id; + UserInfo user = mUserManager.createUser( + mContext.getString(R.string.user_new_user_name), 0 /* flags */); + if (user == null) { + // Couldn't create user, most likely because there are too many, but we haven't + // been able to reload the list yet. + return; + } + int id = user.id; Bitmap icon = UserIcons.convertToBitmap(UserIcons.getDefaultUserIcon( id, /* light= */ false)); mUserManager.setUserIcon(id, icon);