diff --git a/res/values/strings.xml b/res/values/strings.xml
index d6376bc..6d2a1eb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -582,62 +582,66 @@
     <!-- Unlock Picker Settings --><skip />
 
     <!-- Security Picker --><skip />
-    <!--  Title for security picker to choose the unlock method: None/Pattern/PIN/Password -->
+    <!--  Title for security picker to choose the unlock method: None/Pattern/PIN/Password [CHAR LIMIT=22] -->
     <string name="lock_settings_picker_title">Screen unlock security</string>
 
     <!--  Main Security lock settings --><skip />
-    <!--  Title for PreferenceScreen to launch picker for security method when there is none -->
+    <!--  Title for PreferenceScreen to launch picker for security method when there is none [CHAR LIMIT=22] -->
     <string name="unlock_set_unlock_launch_picker_title">Set up screen lock</string>
 
-    <!--  Summary for PreferenceScreen to launch picker for security method when there is none -->
+    <!--  Summary for PreferenceScreen to launch picker for security method when there is none [CHAR LIMIT=45] -->
     <string name="unlock_set_unlock_launch_picker_summary">Lock screen with a pattern, PIN, or password</string>
 
-    <!--  Title for PreferenceScreen to change security method: None/Pattern/PIN/Password  -->
+    <!--  Title for PreferenceScreen to change security method: None/Pattern/PIN/Password [CHAR LIMIT=22] -->
     <string name="unlock_set_unlock_launch_picker_change_title">Change screen lock</string>
 
-    <!--  Summary for PreferenceScreen to changeecurity method: None/Pattern/PIN/Password  -->
+    <!--  Summary for PreferenceScreen to changeecurity method: None/Pattern/PIN/Password [CHAR LIMIT=45]  -->
     <string name="unlock_set_unlock_launch_picker_change_summary">Change or disable pattern, PIN, or password security</string>
 
+    <!-- Title for preference that disables unlock security [CHAR LIMIT=22] -->
+    <string name="unlock_set_unlock_off_title">Off</string>
+    <!-- Summary for preference that disables unlock security [CHAR LIMIT=45] -->
+    <string name="unlock_set_unlock_off_summary">Don\u0027t show the lock screen</string>
 
-    <!-- Title for preference that disables unlock security -->
+    <!-- Title for preference that disables unlock security [CHAR LIMIT=22] -->
     <string name="unlock_set_unlock_none_title">None</string>
-    <!-- Summary for preference that disables unlock security -->
+    <!-- Summary for preference that disables unlock security [CHAR LIMIT=45]-->
     <string name="unlock_set_unlock_none_summary">Disable screen unlock security</string>
 
-    <!-- Title for preference that guides the user through creating an unlock pattern -->
+    <!-- Title for preference that guides the user through creating an unlock pattern [CHAR LIMIT=22]-->
     <string name="unlock_set_unlock_pattern_title">Pattern</string>
-    <!-- Summary for preference that guides the user through creating an unlock pattern -->
+    <!-- Summary for preference that guides the user through creating an unlock pattern [CHAR LIMIT=45] -->
     <string name="unlock_set_unlock_pattern_summary">Draw pattern to unlock screen</string>
 
-    <!-- Title for preference that guides the user through creating an unlock PIN (Personal Identification Number)  -->
+    <!-- Title for preference that guides the user through creating an unlock PIN (Personal Identification Number) [CHAR LIMIT=22] -->
     <string name="unlock_set_unlock_pin_title">PIN</string>
-    <!-- Summary for preference that guides the user through creating an unlock PIN (Personal Identification Number)  -->
+    <!-- Summary for preference that guides the user through creating an unlock PIN (Personal Identification Number) [CHAR LIMIT=45] -->
     <string name="unlock_set_unlock_pin_summary">Enter a numeric PIN to unlock screen</string>
 
-    <!-- Title for preference that guides the user through creating an unlock password -->
+    <!-- Title for preference that guides the user through creating an unlock password [CHAR LIMIT=22] -->
     <string name="unlock_set_unlock_password_title">Password</string>
-    <!-- Title for preference that guides the user through creating an unlock password -->
+    <!-- Title for preference that guides the user through creating an unlock password [CHAR LIMIT=45] -->
     <string name="unlock_set_unlock_password_summary">Enter a password to unlock screen</string>
 
-    <!-- Summary for preference that has been disabled by DevicePolicyAdmin -->
+    <!-- Summary for preference that has been disabled by DevicePolicyAdmin [CHAR LIMIT=45] -->
     <string name="unlock_set_unlock_disabled_summary">Disabled by remote device administrator</string>
 
 
-    <!-- Title for option to turn of password/pin/pattern unlock. -->
+    <!-- Title for option to turn of password/pin/pattern unlock. [CHAR LIMIT=22] -->
     <string name="unlock_disable_lock_title">Turn off screen lock</string>
 
-    <!-- Summary shown under unlock_disable_lock_title when pattern is in use and can be removed -->
+    <!-- Summary shown under unlock_disable_lock_title when pattern is in use and can be removed [CHAR LIMIT=45] -->
     <string name="unlock_disable_lock_pattern_summary">Remove unlock pattern</string>
-    <!-- Summary shown under unlock_disable_lock_title when PIN is in use and can be removed -->
+    <!-- Summary shown under unlock_disable_lock_title when PIN is in use and can be removed [CHAR LIMIT=45]-->
     <string name="unlock_disable_lock_pin_summary">Remove unlock PIN</string>
-    <!-- Summary shown under unlock_disable_lock_title when password is in use and can be removed -->
+    <!-- Summary shown under unlock_disable_lock_title when password is in use and can be removed [CHAR LIMIT=45]-->
     <string name="unlock_disable_lock_password_summary">Remove unlock password</string>
 
-    <!-- Title shown on security settings to allow the user to change their lockscreen pattern -->
+    <!-- Title shown on security settings to allow the user to change their lockscreen pattern [CHAR LIMIT=22] -->
     <string name="unlock_change_lock_pattern_title">Change unlock pattern</string>
-    <!-- Title shown on security settings to allow the user to change their lockscreen PIN -->
+    <!-- Title shown on security settings to allow the user to change their lockscreen PIN [CHAR LIMIT=22] -->
     <string name="unlock_change_lock_pin_title">Change unlock PIN</string>
-    <!-- Title shown on security settings to allow the user to change their lockscreen password -->
+    <!-- Title shown on security settings to allow the user to change their lockscreen password [CHAR LIMIT=22]-->
     <string name="unlock_change_lock_password_title">Change unlock password</string>
 
     <!-- Hint shown in dialog screen when password is too short -->
diff --git a/res/xml/security_settings_picker.xml b/res/xml/security_settings_picker.xml
index cbed209..04258df 100644
--- a/res/xml/security_settings_picker.xml
+++ b/res/xml/security_settings_picker.xml
@@ -21,6 +21,12 @@
         android:title="@string/lock_settings_picker_title">
 
         <PreferenceScreen
+            android:key="unlock_set_off"
+            android:title="@string/unlock_set_unlock_off_title"
+            android:summary="@string/unlock_set_unlock_off_summary"
+            android:persistent="false"/>
+
+        <PreferenceScreen
             android:key="unlock_set_none"
             android:title="@string/unlock_set_unlock_none_title"
             android:summary="@string/unlock_set_unlock_none_summary"
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 5247e79..f87ee5a 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -29,6 +29,7 @@
 
 public class ChooseLockGeneric extends PreferenceActivity {
     private static final int MIN_PASSWORD_LENGTH = 4;
+    private static final String KEY_UNLOCK_SET_OFF = "unlock_set_off";
     private static final String KEY_UNLOCK_SET_NONE = "unlock_set_none";
     private static final String KEY_UNLOCK_SET_PIN = "unlock_set_pin";
     private static final String KEY_UNLOCK_SET_PASSWORD = "unlock_set_password";
@@ -68,14 +69,16 @@
             Preference preference) {
         final String key = preference.getKey();
         boolean handled = true;
-        if (KEY_UNLOCK_SET_NONE.equals(key)) {
-            updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
+        if (KEY_UNLOCK_SET_OFF.equals(key)) {
+            updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, true);
+        } else if (KEY_UNLOCK_SET_NONE.equals(key)) {
+            updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, false);
         } else if (KEY_UNLOCK_SET_PATTERN.equals(key)) {
-            updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+            updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, false);
         } else if (KEY_UNLOCK_SET_PIN.equals(key)) {
-            updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
+            updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC, false);
         } else if (KEY_UNLOCK_SET_PASSWORD.equals(key)) {
-            updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC);
+            updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC, false);
         } else {
             handled = false;
         }
@@ -113,7 +116,7 @@
             addPreferencesFromResource(R.xml.security_settings_picker);
             disableUnusablePreferences(mDPM.getPasswordQuality(null));
         } else {
-            updateUnlockMethodAndFinish(quality);
+            updateUnlockMethodAndFinish(quality, false);
         }
     }
 
@@ -131,7 +134,9 @@
             if (pref instanceof PreferenceScreen) {
                 final String key = ((PreferenceScreen) pref).getKey();
                 boolean enabled = true;
-                if (KEY_UNLOCK_SET_NONE.equals(key)) {
+                if (KEY_UNLOCK_SET_OFF.equals(key)) {
+                    enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+                } else if (KEY_UNLOCK_SET_NONE.equals(key)) {
                     enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
                 } else if (KEY_UNLOCK_SET_PATTERN.equals(key)) {
                     enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_SOMETHING;
@@ -154,8 +159,10 @@
      * {@link DevicePolicyManager#PASSWORD_QUALITY_UNSPECIFIED}, password is cleared.
      *
      * @param quality the desired quality. Ignored if DevicePolicyManager requires more security.
+     * @param disabled whether or not to show LockScreen at all. Only meaningful when quality is
+     * {@link DevicePolicyManager#PASSWORD_QUALITY_UNSPECIFIED}
      */
-    void updateUnlockMethodAndFinish(int quality) {
+    void updateUnlockMethodAndFinish(int quality, boolean disabled) {
         // Sanity check. We should never get here without confirming user's existing password first.
         if (!mPasswordConfirmed) {
             throw new IllegalStateException("Tried to update password without confirming first");
@@ -191,6 +198,7 @@
             startActivity(intent);
         } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
             mChooseLockSettingsHelper.utils().clearLock();
+            mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled);
             setResult(RESULT_OK);
         }
         finish();
