summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/users/UserSettings.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/users/UserSettings.java')
-rw-r--r--src/com/android/settings/users/UserSettings.java47
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) {