diff options
Diffstat (limited to 'src/com/android/settings/users/UserSettings.java')
-rw-r--r-- | src/com/android/settings/users/UserSettings.java | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 7dc83ef..f5ea6aa 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -418,9 +418,11 @@ public class UserSettings extends SettingsPreferenceFragment int userId = newUserInfo.id; UserHandle user = new UserHandle(userId); mUserManager.setUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS, true, user); - mUserManager.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, true, user); + // Change the setting before applying the DISALLOW_SHARE_LOCATION restriction, otherwise + // the putIntForUser() will fail. Secure.putIntForUser(getContentResolver(), Secure.LOCATION_MODE, Secure.LOCATION_MODE_OFF, userId); + mUserManager.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, true, user); Bitmap bitmap = createBitmapFromDrawable( USER_DRAWABLES[userId % UserSettings.USER_DRAWABLES.length]); mUserManager.setUserIcon(userId, bitmap); @@ -630,14 +632,14 @@ public class UserSettings extends SettingsPreferenceFragment Dialog dlg = new AlertDialog.Builder(context) .setTitle(R.string.user_exit_guest_confirm_title) .setMessage(R.string.user_exit_guest_confirm_message) - .setPositiveButton(android.R.string.yes, + .setPositiveButton(R.string.user_exit_guest_dialog_remove, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { exitGuest(); } }) - .setNegativeButton(android.R.string.no, null) + .setNegativeButton(android.R.string.cancel, null) .create(); return dlg; } @@ -741,6 +743,10 @@ public class UserSettings extends SettingsPreferenceFragment final boolean voiceCapable = Utils.isVoiceCapable(context); final ArrayList<Integer> missingIcons = new ArrayList<Integer>(); for (UserInfo user : users) { + if (user.isManagedProfile()) { + // Managed profiles appear under Accounts Settings instead + continue; + } Preference pref; if (user.id == UserHandle.myUserId()) { pref = mMePreference; @@ -773,19 +779,11 @@ public class UserSettings extends SettingsPreferenceFragment if (!isInitialized(user)) { if (user.isRestricted()) { pref.setSummary(R.string.user_summary_restricted_not_set_up); - } else if (user.isManagedProfile()) { - pref.setSummary(R.string.user_summary_managed_profile_not_set_up); } else { pref.setSummary(R.string.user_summary_not_set_up); } } else if (user.isRestricted()) { pref.setSummary(R.string.user_summary_restricted_profile); - } else if (user.isManagedProfile()) { - if (user.isEnabled()) { - pref.setSummary(R.string.user_summary_managed_profile); - } else { - pref.setSummary(R.string.user_summary_managed_profile_not_enabled); - } } if (user.iconPath != null) { if (mUserIcons.get(user.id) == null) { @@ -794,6 +792,8 @@ public class UserSettings extends SettingsPreferenceFragment } else { setPhotoId(pref, user); } + } else { + pref.setIcon(getEncircledDefaultAvatar()); } } @@ -807,7 +807,19 @@ public class UserSettings extends SettingsPreferenceFragment mUserListCategory.addPreference(pref); } - if (!mIsGuest) { + boolean showGuestPreference = !mIsGuest; + // If user has DISALLOW_ADD_USER don't allow creating a guest either. + if (showGuestPreference && mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)) { + showGuestPreference = false; + // If guest already exists, no user creation needed. + for (UserInfo user : users) { + if (user.isGuest()) { + showGuestPreference = true; + break; + } + } + } + if (showGuestPreference) { // Add a virtual Guest user for guest defaults Preference pref = new UserPreference(getActivity(), null, UserPreference.USERID_GUEST_DEFAULTS, @@ -825,7 +837,7 @@ public class UserSettings extends SettingsPreferenceFragment if (missingIcons.size() > 0) { loadIconsAsync(missingIcons); } - boolean moreUsers = mUserManager.getMaxSupportedUsers() > users.size(); + boolean moreUsers = mUserManager.canAddMoreUsers(); mAddUser.setEnabled(moreUsers); } @@ -841,6 +853,9 @@ public class UserSettings extends SettingsPreferenceFragment protected Void doInBackground(List<Integer>... values) { for (int userId : values[0]) { Bitmap bitmap = mUserManager.getUserIcon(userId); + if (bitmap == null) { + bitmap = createBitmapFromDrawable(R.drawable.ic_avatar_default_1); + } mUserIcons.append(userId, bitmap); } return null; @@ -911,7 +926,7 @@ public class UserSettings extends SettingsPreferenceFragment if (!isInitialized(user)) { mHandler.sendMessage(mHandler.obtainMessage( MESSAGE_SETUP_USER, user.id, user.serialNumber)); - } else if (!user.isManagedProfile()) { + } else { switchUserNow(userId); } } @@ -936,6 +951,10 @@ public class UserSettings extends SettingsPreferenceFragment } } // No guest user. Create one. + if (mUserManager.hasUserRestriction(UserManager.DISALLOW_ADD_USER)) { + Log.i(TAG, "Blocking guest creation because it is restricted"); + return; + } UserInfo guestUser = mUserManager.createGuest(getActivity(), getResources().getString(R.string.user_guest)); if (guestUser != null) { |