diff --git a/res/values/strings.xml b/res/values/strings.xml
index db36384..0be96bd 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1751,10 +1751,11 @@
     <string name="no_internet_access_remember">Don\u2019t ask again for this network</string>
 
     <!-- Dialog text to tell the user that the selected network has lost Internet access, and asking the user whether they want to avoid this network. -->
-    <string name="lost_internet_access_title">Switch to cellular data?</string>
-    <string name="lost_internet_access_text">Wi\u2011Fi lost Internet access. Your device can switch to cellular automatically when Wi\u2011Fi isn\u2019t working. Additional charges may apply.</string>
-    <string name="lost_internet_access_switch">Switch automatically</string>
+    <string name="lost_internet_access_title">Wi\u2011Fi is not connected to the Internet</string>
+    <string name="lost_internet_access_text">You can switch to the cellular network whenever Wi\u2011Fi has a bad connection.  Data usage may apply.</string>
+    <string name="lost_internet_access_switch">Switch to cellular</string>
     <string name="lost_internet_access_cancel">Stay on Wi\u2011Fi</string>
+    <string name="lost_internet_access_persist">Never show again</string>
 
     <!-- Button label to connect to a Wi-Fi network -->
     <string name="wifi_connect">Connect</string>
diff --git a/src/com/android/settings/wifi/WifiNoInternetDialog.java b/src/com/android/settings/wifi/WifiNoInternetDialog.java
index 0924498..a8f9e33 100644
--- a/src/com/android/settings/wifi/WifiNoInternetDialog.java
+++ b/src/com/android/settings/wifi/WifiNoInternetDialog.java
@@ -138,14 +138,16 @@
         ap.mPositiveButtonListener = this;
         ap.mNegativeButtonListener = this;
 
-        if (ACTION_PROMPT_UNVALIDATED.equals(mAction)) {
-            final LayoutInflater inflater = LayoutInflater.from(ap.mContext);
-            final View checkbox = inflater.inflate(
-                    com.android.internal.R.layout.always_use_checkbox, null);
-            ap.mView = checkbox;
+        final LayoutInflater inflater = LayoutInflater.from(ap.mContext);
+        final View checkbox = inflater.inflate(
+                com.android.internal.R.layout.always_use_checkbox, null);
+        ap.mView = checkbox;
+        mAlwaysAllow = (CheckBox) checkbox.findViewById(com.android.internal.R.id.alwaysUse);
 
-            mAlwaysAllow = (CheckBox) checkbox.findViewById(com.android.internal.R.id.alwaysUse);
+        if (ACTION_PROMPT_UNVALIDATED.equals(mAction)) {
             mAlwaysAllow.setText(getString(R.string.no_internet_access_remember));
+        } else {
+            mAlwaysAllow.setText(getString(R.string.lost_internet_access_persist));
         }
 
         setupAlert();
@@ -175,6 +177,7 @@
             Log.d(TAG, "LOST_INTERNET: " + action);
             // Only ever set the setting to 1. The values understood by ConnectivityService are null
             // (use carrier default) or 1 (avoid bad networks regardless of carrier).
+            // TODO: Use a value other than 1 here to indicate a persisted "yes" or "no" given mAlwaysAllow.
             if (accept) {
                 Settings.Global.putInt(mAlertParams.mContext.getContentResolver(),
                         Settings.Global.NETWORK_AVOID_BAD_WIFI, 1);
