From 783ea85bec4ec3b2f0fa9dd06cf065e527daf04c Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Thu, 1 Nov 2012 19:39:21 -0700 Subject: [PATCH] Disable the "none" security selection in settings when there's only 1 user Fixes bug 7454567 Change-Id: Ifffa1403af8d45bc3c7da1f459b87f0a2c064b80 --- src/com/android/settings/ChooseLockGeneric.java | 11 +++++++++++ src/com/android/settings/SecuritySettings.java | 9 ++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index a899549a3e0..6854305389e 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -21,7 +21,9 @@ import android.app.PendingIntent; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Intent; +import android.content.pm.UserInfo; import android.os.Bundle; +import android.os.UserManager; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; @@ -33,6 +35,8 @@ import android.widget.ListView; import com.android.internal.widget.LockPatternUtils; +import java.util.List; + import libcore.util.MutableBoolean; public class ChooseLockGeneric extends PreferenceActivity { @@ -270,6 +274,12 @@ public class ChooseLockGeneric extends PreferenceActivity { .getBooleanExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false); final boolean weakBiometricAvailable = mChooseLockSettingsHelper.utils().isBiometricWeakInstalled(); + + // if there are multiple users, disable "None" setting + UserManager mUm = (UserManager) getSystemService(Context.USER_SERVICE); + List users = mUm.getUsers(true); + final boolean singleUser = users.size() == 1; + for (int i = entries.getPreferenceCount() - 1; i >= 0; --i) { Preference pref = entries.getPreference(i); if (pref instanceof PreferenceScreen) { @@ -278,6 +288,7 @@ public class ChooseLockGeneric extends PreferenceActivity { boolean visible = true; if (KEY_UNLOCK_SET_OFF.equals(key)) { enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; + visible = singleUser; // don't show when there's more than 1 user } else if (KEY_UNLOCK_SET_NONE.equals(key)) { enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; } else if (KEY_UNLOCK_SET_BIOMETRIC_WEAK.equals(key)) { diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index 22812b24118..59cd1101a11 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -27,8 +27,10 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.content.pm.UserInfo; import android.os.Bundle; import android.os.UserHandle; +import android.os.UserManager; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; @@ -120,7 +122,12 @@ public class SecuritySettings extends SettingsPreferenceFragment // Add options for lock/unlock screen int resid = 0; if (!mLockPatternUtils.isSecure()) { - if (mLockPatternUtils.isLockScreenDisabled()) { + // if there are multiple users, disable "None" setting + UserManager mUm = (UserManager) getSystemService(Context.USER_SERVICE); + List users = mUm.getUsers(true); + final boolean singleUser = users.size() == 1; + + if (singleUser && mLockPatternUtils.isLockScreenDisabled()) { resid = R.xml.security_settings_lockscreen; } else { resid = R.xml.security_settings_chooser;