diff --git a/res/xml/apn_editor.xml b/res/xml/apn_editor.xml
index eac78e9..b1e332b 100644
--- a/res/xml/apn_editor.xml
+++ b/res/xml/apn_editor.xml
@@ -22,6 +22,7 @@
         android:key="apn_name"
         android:singleLine="true"
         android:inputType="text"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_apn"
@@ -29,6 +30,7 @@
         android:key="apn_apn"
         android:singleLine="true"
         android:inputType="textEmailAddress"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_http_proxy"
@@ -36,6 +38,7 @@
         android:key="apn_http_proxy"
         android:singleLine="true"
         android:inputType="textUri"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_http_port"
@@ -43,6 +46,7 @@
         android:key="apn_http_port"
         android:singleLine="true"
         android:inputType="number"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_user"
@@ -50,6 +54,7 @@
         android:key="apn_user"
         android:singleLine="true"
         android:inputType="textEmailAddress"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_password"
@@ -57,6 +62,7 @@
         android:key="apn_password"
         android:singleLine="true"
         android:inputType="textPassword"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_server"
@@ -64,6 +70,7 @@
         android:key="apn_server"
         android:singleLine="true"
         android:inputType="textUri"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_mmsc"
@@ -71,6 +78,7 @@
         android:key="apn_mmsc"
         android:singleLine="true"
         android:inputType="textUri"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_mms_proxy"
@@ -78,6 +86,7 @@
         android:key="apn_mms_proxy"
         android:singleLine="true"
         android:inputType="textUri"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_mms_port"
@@ -85,6 +94,7 @@
         android:key="apn_mms_port"
         android:singleLine="true"
         android:inputType="number"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_mcc"
@@ -92,6 +102,7 @@
         android:key="apn_mcc"
         android:singleLine="true"
         android:inputType="number"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_mnc"
@@ -99,12 +110,14 @@
         android:key="apn_mnc"
         android:singleLine="true"
         android:inputType="number"
+        android:persistent="false"
         />
     <ListPreference
         android:title="@string/apn_auth_type"
         android:key="auth_type"
         android:entries="@array/apn_auth_entries"
         android:entryValues="@array/apn_auth_values"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/apn_type"
@@ -112,6 +125,7 @@
         android:key="apn_type"
         android:singleLine="true"
         android:inputType="textNoSuggestions"
+        android:persistent="false"
         />
     <ListPreference
         android:title="@string/apn_protocol"
@@ -119,6 +133,7 @@
         android:key="apn_protocol"
         android:entries="@array/apn_protocol_entries"
         android:entryValues="@array/apn_protocol_values"
+        android:persistent="false"
         />
     <ListPreference
         android:title="@string/apn_roaming_protocol"
@@ -126,6 +141,7 @@
         android:key="apn_roaming_protocol"
         android:entries="@array/apn_protocol_entries"
         android:entryValues="@array/apn_protocol_values"
+        android:persistent="false"
         />
     <SwitchPreference
         android:title="@string/carrier_enabled"
@@ -133,18 +149,21 @@
         android:enabled="false"
         android:summaryOn="@string/carrier_enabled_summaryOn"
         android:summaryOff="@@string/carrier_enabled_summaryOff"
+        android:persistent="false"
         />
     <MultiSelectListPreference
         android:title="@string/bearer"
         android:key="bearer_multi"
         android:entries="@array/bearer_entries"
         android:entryValues="@array/bearer_values"
+        android:persistent="false"
         />
     <ListPreference
         android:title="@string/mvno_type"
         android:key="mvno_type"
         android:entries="@array/mvno_type_entries"
         android:entryValues="@array/mvno_type_values"
+        android:persistent="false"
         />
     <EditTextPreference
         android:title="@string/mvno_match_data"
@@ -152,5 +171,6 @@
         android:key="mvno_match_data"
         android:singleLine="true"
         android:inputType="text"
+        android:persistent="false"
         />
 </PreferenceScreen>
diff --git a/res/xml/device_info_status.xml b/res/xml/device_info_status.xml
index 9a57af9..b381d04 100644
--- a/res/xml/device_info_status.xml
+++ b/res/xml/device_info_status.xml
@@ -23,13 +23,13 @@
         android:enabled="false"
         android:shouldDisableView="false"
         android:title="@string/battery_status_title"
-        android:summary="@string/device_info_not_available" />
+        android:summary="@string/summary_placeholder" />
     <Preference
         android:key="battery_level"
         android:enabled="false"
         android:shouldDisableView="false"
         android:title="@string/battery_level_title"
-        android:summary="@string/device_info_not_available"
+        android:summary="@string/summary_placeholder"
         android:persistent="false" />
     <Preference
         android:key="sim_status"
@@ -52,41 +52,41 @@
         android:enabled="false"
         android:shouldDisableView="false"
         android:title="@string/wifi_advanced_ip_address_title"
-        android:summary="@string/device_info_not_available"
+        android:summary="@string/summary_placeholder"
         android:persistent="false" />
     <Preference
         android:key="wifi_mac_address"
         android:enabled="false"
         android:shouldDisableView="false"
         android:title="@string/status_wifi_mac_address"
-        android:summary="@string/device_info_not_available"
+        android:summary="@string/summary_placeholder"
         android:persistent="false" />
     <Preference
         android:key="bt_address"
         android:enabled="false"
         android:shouldDisableView="false"
         android:title="@string/status_bt_address"
-        android:summary="@string/device_info_not_available"
+        android:summary="@string/summary_placeholder"
         android:persistent="false" />
     <Preference
         android:key="serial_number"
         android:enabled="false"
         android:shouldDisableView="false"
         android:title="@string/status_serial_number"
-        android:summary="@string/device_info_not_available"
+        android:summary="@string/summary_placeholder"
         android:persistent="false" />
     <Preference
         android:key="up_time"
         android:enabled="false"
         android:shouldDisableView="false"
         android:title="@string/status_up_time"
-        android:summary="@string/device_info_not_available"
+        android:summary="@string/summary_placeholder"
         android:persistent="false" />
     <Preference
         android:key="wimax_mac_address"
         android:enabled="false"
         android:shouldDisableView="false"
         android:title="@string/status_wimax_mac_address"
-        android:summary="@string/device_info_not_available"
+        android:summary="@string/summary_placeholder"
         android:persistent="false" />
 </PreferenceScreen>
diff --git a/src/com/android/settings/ApnEditor.java b/src/com/android/settings/ApnEditor.java
index e61f959..50a7a77 100644
--- a/src/com/android/settings/ApnEditor.java
+++ b/src/com/android/settings/ApnEditor.java
@@ -297,6 +297,11 @@
             getPreferenceScreen().getPreference(i).setOnPreferenceChangeListener(this);
         }
 
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
         fillUi();
     }
 
diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java
index baddc6c..624103a 100644
--- a/src/com/android/settings/deviceinfo/Status.java
+++ b/src/com/android/settings/deviceinfo/Status.java
@@ -31,6 +31,7 @@
 import android.os.SystemClock;
 import android.os.SystemProperties;
 import android.os.UserManager;
+import android.provider.SearchIndexableResource;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
 import android.text.TextUtils;
@@ -40,13 +41,17 @@
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
 
 import java.lang.ref.WeakReference;
+import java.util.Arrays;
+import java.util.List;
 
 import static android.content.Context.CONNECTIVITY_SERVICE;
 import static android.content.Context.WIFI_SERVICE;
 
-public class Status extends SettingsPreferenceFragment {
+public class Status extends SettingsPreferenceFragment implements Indexable {
 
     private static final String KEY_BATTERY_STATUS = "battery_status";
     private static final String KEY_BATTERY_LEVEL = "battery_level";
@@ -302,4 +307,19 @@
 
         return h + ":" + pad(m) + ":" + pad(s);
     }
+
+    /**
+     * For Search.
+     */
+    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.device_info_status;
+                    return Arrays.asList(sir);
+                }
+            };
 }
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index 3209813..b9e944e 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -46,6 +46,7 @@
 import com.android.settings.datausage.DataUsageSummary;
 import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
 import com.android.settings.development.DevelopmentSettings;
+import com.android.settings.deviceinfo.Status;
 import com.android.settings.deviceinfo.StorageDashboardFragment;
 import com.android.settings.deviceinfo.StorageSettings;
 import com.android.settings.display.AmbientDisplaySettings;
@@ -189,6 +190,7 @@
         addIndex(PrintSettingsFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_print);
         addIndex(DevelopmentSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_development);
         addIndex(DeviceInfoSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
+        addIndex(Status.class, NO_DATA_RES_ID, 0 /* icon */);
         addIndex(LegalSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
         addIndex(ZenModeVisualInterruptionSettings.class,
                 R.xml.zen_mode_visual_interruptions_settings,
diff --git a/src/com/android/settings/wifi/ConfigureWifiSettings.java b/src/com/android/settings/wifi/ConfigureWifiSettings.java
index 43f25f1..4199a6d 100644
--- a/src/com/android/settings/wifi/ConfigureWifiSettings.java
+++ b/src/com/android/settings/wifi/ConfigureWifiSettings.java
@@ -19,6 +19,8 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.net.NetworkScoreManager;
 import android.net.wifi.WifiManager;
 import android.provider.SearchIndexableResource;
@@ -42,6 +44,8 @@
 
     private static final String TAG = "ConfigureWifiSettings";
 
+    public static final String KEY_IP_ADDRESS = "current_ip_address";
+
     private WifiWakeupPreferenceController mWifiWakeupPreferenceController;
     private UseOpenWifiPreferenceController mUseOpenWifiPreferenceController;
 
@@ -114,5 +118,22 @@
                     sir.xmlResId = R.xml.wifi_configure_settings;
                     return Arrays.asList(sir);
                 }
+
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    List<String> keys =  super.getNonIndexableKeys(context);
+
+                    // If connected to WiFi, this IP address will be the same as the Status IP.
+                    // Or, if there is no connection they will say unavailable.
+                    ConnectivityManager cm = (ConnectivityManager)
+                            context.getSystemService(Context.CONNECTIVITY_SERVICE);
+                    NetworkInfo info = cm.getActiveNetworkInfo();
+                    if (info == null
+                            || info.getType() == ConnectivityManager.TYPE_WIFI) {
+                        keys.add(KEY_IP_ADDRESS);
+                    }
+
+                    return keys;
+                }
             };
 }
diff --git a/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java
index 37da38e..5a08c58 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceController.java
@@ -16,6 +16,9 @@
 
 package com.android.settings.wifi.tether;
 
+import static android.net.wifi.WifiConfiguration.AP_BAND_2GHZ;
+import static android.net.wifi.WifiConfiguration.AP_BAND_5GHZ;
+
 import android.content.Context;
 import android.net.wifi.WifiConfiguration;
 import android.support.v7.preference.ListPreference;
@@ -24,9 +27,6 @@
 
 import com.android.settings.R;
 
-import static android.net.wifi.WifiConfiguration.AP_BAND_2GHZ;
-import static android.net.wifi.WifiConfiguration.AP_BAND_5GHZ;
-
 public class WifiTetherApBandPreferenceController extends WifiTetherBasePreferenceController {
 
     private static final String PREF_KEY = "wifi_tether_network_ap_band";
@@ -41,10 +41,14 @@
         super(context, listener);
         mBandEntries = mContext.getResources().getStringArray(R.array.wifi_ap_band_config_full);
         final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
-        if (config != null) {
+        if (config == null) {
+            mBandIndex = 0;
+        } else if (is5GhzBandSupported()) {
             mBandIndex = config.apBand;
         } else {
-            mBandIndex = 0;
+            config.apBand = 0;
+            mWifiManager.setWifiApConfiguration(config);
+            mBandIndex = config.apBand;
         }
     }
 
@@ -77,10 +81,11 @@
     }
 
     private boolean is5GhzBandSupported() {
-        if (mBandIndex > 0) {
-            return true;
+        final String countryCode = mWifiManager.getCountryCode();
+        if (!mWifiManager.isDualBandSupported() || countryCode == null) {
+            return false;
         }
-        return mWifiManager.is5GHzBandSupported();
+        return true;
     }
 
     public int getBandIndex() {
diff --git a/tests/robotests/assets/grandfather_not_implementing_indexable b/tests/robotests/assets/grandfather_not_implementing_indexable
index 08fe16a..e8a32ec 100644
--- a/tests/robotests/assets/grandfather_not_implementing_indexable
+++ b/tests/robotests/assets/grandfather_not_implementing_indexable
@@ -20,7 +20,6 @@
 com.android.settings.wifi.WifiInfo
 com.android.settings.applications.VrListenerSettings
 com.android.settings.inputmethod.UserDictionaryList
-com.android.settings.deviceinfo.Status
 com.android.settings.datausage.DataSaverSummary
 com.android.settings.notification.ChannelNotificationSettings
 com.android.settings.datausage.AppDataUsage
diff --git a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
new file mode 100644
index 0000000..687287b
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
@@ -0,0 +1,83 @@
+package com.android.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settings.testutils.XmlTestUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.List;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ConfigureWifiSettingsTest {
+
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        mContext = spy(RuntimeEnvironment.application);
+    }
+
+    @Test
+    public void testNonIndexableKeys_existInXmlLayout() {
+        final List<String> niks = ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER
+                .getNonIndexableKeys(mContext);
+        final int xmlId = new ConfigureWifiSettings().getPreferenceScreenResId();
+
+        final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(mContext, xmlId);
+
+        assertThat(keys).containsAllIn(niks);
+    }
+
+    @Test
+    public void testNonIndexableKeys_noConnection_blocksIP() {
+        ConnectivityManager manager = mock(ConnectivityManager.class);
+        when(manager.getActiveNetworkInfo()).thenReturn(null);
+        doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE);
+
+        final List<String> niks = ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER
+                .getNonIndexableKeys(mContext);
+        assertThat(niks).contains(ConfigureWifiSettings.KEY_IP_ADDRESS);
+    }
+
+    @Test
+    public void testNonIndexableKeys_wifiConnection_blocksIP() {
+        ConnectivityManager manager = mock(ConnectivityManager.class);
+        NetworkInfo info = mock(NetworkInfo.class);
+        when(info.getType()).thenReturn(ConnectivityManager.TYPE_WIFI);
+        when(manager.getActiveNetworkInfo()).thenReturn(info);
+        doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE);
+
+        final List<String> niks = ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER
+                .getNonIndexableKeys(mContext);
+        assertThat(niks).contains(ConfigureWifiSettings.KEY_IP_ADDRESS);
+    }
+
+    @Test
+    public void testNonIndexableKeys_mobileConnection_blocksIP() {
+        ConnectivityManager manager = mock(ConnectivityManager.class);
+        NetworkInfo info = mock(NetworkInfo.class);
+        when(info.getType()).thenReturn(ConnectivityManager.TYPE_MOBILE);
+        when(manager.getActiveNetworkInfo()).thenReturn(info);
+        doReturn(manager).when(mContext).getSystemService(Context.CONNECTIVITY_SERVICE);
+
+        final List<String> niks = ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER
+                .getNonIndexableKeys(mContext);
+        assertThat(niks).doesNotContain(ConfigureWifiSettings.KEY_IP_ADDRESS);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java
index a7e00ab..8f0b143 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherApBandPreferenceControllerTest.java
@@ -16,6 +16,12 @@
 
 package com.android.settings.wifi.tether;
 
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
 import android.content.Context;
 import android.net.ConnectivityManager;
 import android.net.wifi.WifiManager;
@@ -35,12 +41,6 @@
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class WifiTetherApBandPreferenceControllerTest {
@@ -75,7 +75,8 @@
 
     @Test
     public void display_5GhzSupported_shouldDisplayFullList() {
-        when(mWifiManager.is5GHzBandSupported()).thenReturn(true);
+        when(mWifiManager.getCountryCode()).thenReturn("US");
+        when(mWifiManager.isDualBandSupported()).thenReturn(true);
 
         mController.displayPreference(mScreen);
 
@@ -83,8 +84,21 @@
     }
 
     @Test
+    public void display_noCountryCode_shouldDisable() {
+        when(mWifiManager.getCountryCode()).thenReturn(null);
+        when(mWifiManager.isDualBandSupported()).thenReturn(true);
+
+        mController.displayPreference(mScreen);
+
+        assertThat(mListPreference.getEntries()).isNull();
+        assertThat(mListPreference.isEnabled()).isFalse();
+        assertThat(mListPreference.getSummary())
+                .isEqualTo(RuntimeEnvironment.application.getString(R.string.wifi_ap_choose_2G));
+    }
+
+    @Test
     public void display_5GhzNotSupported_shouldDisable() {
-        when(mWifiManager.is5GHzBandSupported()).thenReturn(false);
+        when(mWifiManager.isDualBandSupported()).thenReturn(false);
 
         mController.displayPreference(mScreen);
 
