diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 0f1fa4d..ea33881 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Wys %d versteekte items</item>
       <item quantity="one">Wys %d versteekte item</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Netwerk en internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Instellings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Soekinstellings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Soekinstellings"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index cffa887..000fa48 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="one">%d የተደበቁ ንጥሎችን አሳይ</item>
       <item quantity="other">%d የተደበቁ ንጥሎችን አሳይ</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"አውታረ መረብ እና በይነመረብ"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"ቅንብሮች"</string>
     <string name="search_menu" msgid="6283419262313758339">"የፍለጋ ቅንብሮች"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"የፍለጋ ቅንብሮች"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 207db30..0bc0be2 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -2610,6 +2610,9 @@
       <item quantity="other">‏عرض %d عنصر مخفي</item>
       <item quantity="one">‏عرض %d عنصر مخفي</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"الشبكة والإنترنت"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"الإعدادات"</string>
     <string name="search_menu" msgid="6283419262313758339">"إعدادات البحث"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"إعدادات البحث"</string>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 222c7ef..7fd0f1c 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">%d gizli element göstərin</item>
       <item quantity="one">%d gizli element göstərin</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Şəbəkə və İnternet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Ayarlar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Axtarış ayarları"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Axtarış ayarları"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 35c7a3f..15a42e8 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -378,8 +378,8 @@
     <string name="security_settings_fingerprint_enroll_touch_dialog_title" msgid="1863561601428695160">"Ups, to nije senzor"</string>
     <string name="security_settings_fingerprint_enroll_touch_dialog_message" msgid="5053971232594165142">"Koristite senzor za otisak prsta na uređaju."</string>
     <string name="security_settings_fingerprint_enroll_error_dialog_title" msgid="3618021988442639280">"Registracija nije završena"</string>
-    <string name="security_settings_fingerprint_enroll_error_timeout_dialog_message" msgid="2942551158278899627">"Vremensko ograničenje za registraciju otiska prsta je isteklo. Pokušajte ponovo."</string>
-    <string name="security_settings_fingerprint_enroll_error_generic_dialog_message" msgid="3624760637222239293">"Registracija otiska prsta nije uspela. Pokušajte ponovo ili koristite drugi prst."</string>
+    <string name="security_settings_fingerprint_enroll_error_timeout_dialog_message" msgid="2942551158278899627">"Vremensko ograničenje za registraciju otiska prsta je isteklo. Probajte ponovo."</string>
+    <string name="security_settings_fingerprint_enroll_error_generic_dialog_message" msgid="3624760637222239293">"Registracija otiska prsta nije uspela. Probajte ponovo ili koristite drugi prst."</string>
     <string name="fingerprint_enroll_button_add" msgid="6317978977419045463">"Dodajte još jedan"</string>
     <string name="fingerprint_enroll_button_next" msgid="6247009337616342759">"Dalje"</string>
     <string name="security_settings_fingerprint_enroll_disclaimer" msgid="2624905914239271751">"Osim za otključavanje telefona, otisak prsta možete da koristite i da biste dali ovlašćenje za kupovine i pristup aplikacijama. "<annotation id="url">"Saznajte više"</annotation></string>
@@ -504,7 +504,7 @@
     <string name="unlock_change_lock_pattern_title" msgid="2044092014872741130">"Promena šablona za otključavanje"</string>
     <string name="unlock_change_lock_pin_title" msgid="806629901095938484">"Promena PIN-a za otključavanje"</string>
     <string name="unlock_change_lock_password_title" msgid="5606298470358768865">"Promena lozinke za otključavanje"</string>
-    <string name="lock_profile_wipe_attempts" msgid="1216193652369039672">"Pokušajte ponovo. <xliff:g id="CURRENT_ATTEMPTS">%1$d</xliff:g>. pokušaj od <xliff:g id="TOTAL_ATTEMPTS">%2$d</xliff:g>."</string>
+    <string name="lock_profile_wipe_attempts" msgid="1216193652369039672">"Probajte ponovo. <xliff:g id="CURRENT_ATTEMPTS">%1$d</xliff:g>. pokušaj od <xliff:g id="TOTAL_ATTEMPTS">%2$d</xliff:g>."</string>
     <string name="lock_profile_wipe_warning_title" msgid="2961600792367265036">"Poslednji pokušaj"</string>
     <string name="lock_profile_wipe_warning_content_pattern" msgid="8978031996247660921">"Ako u ovom pokušaju unesete netačan šablon za Work, sa ovog uređaja ćemo ukloniti profil za Work i povezane podatke."</string>
     <string name="lock_profile_wipe_warning_content_pin" msgid="7697973618542377880">"Ako u ovom pokušaju unesete netačan PIN za Work, sa ovog uređaja ćemo ukloniti profil za Work i povezane podatke."</string>
@@ -723,11 +723,11 @@
     <string name="wifi_wps_complete" msgid="2388138550456729134">"WPS je uspeo. Povezivanje na mrežu..."</string>
     <string name="wifi_wps_connected" msgid="7153432445748931183">"Uspostavljena je veza sa Wi-Fi mrežom <xliff:g id="NETWORK_NAME">%s</xliff:g>"</string>
     <string name="wifi_wps_in_progress" msgid="3372311348221357944">"WPS je već pokrenut i biće dovršen za najviše dva minuta"</string>
-    <string name="wifi_wps_failed_generic" msgid="5668775022238832527">"WPS nije uspeo. Pokušajte ponovo za nekoliko minuta."</string>
+    <string name="wifi_wps_failed_generic" msgid="5668775022238832527">"WPS nije uspeo. Probajte ponovo za nekoliko minuta."</string>
     <string name="wifi_wps_failed_wep" msgid="2702820087105284461">"Bezbednosno podešavanje bežičnog rutera (WEP) nije podržano"</string>
     <string name="wifi_wps_failed_tkip" msgid="4282401586860713349">"Bezbednosno podešavanje bežičnog rutera (TKIP) nije podržano"</string>
-    <string name="wifi_wps_failed_auth" msgid="1174614355181181958">"Potvrda autentičnosti nije uspela. Pokušajte ponovo."</string>
-    <string name="wifi_wps_failed_overlap" msgid="5159533685596844778">"Otkrivena je druga WPS sesija. Pokušajte ponovo za nekoliko minuta."</string>
+    <string name="wifi_wps_failed_auth" msgid="1174614355181181958">"Potvrda autentičnosti nije uspela. Probajte ponovo."</string>
+    <string name="wifi_wps_failed_overlap" msgid="5159533685596844778">"Otkrivena je druga WPS sesija. Probajte ponovo za nekoliko minuta."</string>
     <string name="wifi_ssid" msgid="5519636102673067319">"Ime mreže"</string>
     <string name="wifi_ssid_hint" msgid="897593601067321355">"Unesite SSID"</string>
     <string name="wifi_security" msgid="6603611185592956936">"Bezbednost"</string>
@@ -1101,8 +1101,8 @@
     <string name="dlg_confirm_unmount_text" product="default" msgid="6998379994779187692">"Ako izvadite SD karticu, neke aplikacije koje koristite će se zaustaviti i možda neće biti dostupne sve dok ponovo ne stavite SD karticu."</string>
     <string name="dlg_error_unmount_title" product="nosdcard" msgid="4642742385125426529"></string>
     <string name="dlg_error_unmount_title" product="default" msgid="4642742385125426529"></string>
-    <string name="dlg_error_unmount_text" product="nosdcard" msgid="9191518889746166147">"Nije moguće isključiti USB memoriju. Pokušajte ponovo kasnije."</string>
-    <string name="dlg_error_unmount_text" product="default" msgid="3500976899159848422">"Nije moguće isključiti SD karticu. Pokušajte ponovo kasnije."</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="9191518889746166147">"Nije moguće isključiti USB memoriju. Probajte ponovo kasnije."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="3500976899159848422">"Nije moguće isključiti SD karticu. Probajte ponovo kasnije."</string>
     <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USB memorija će biti isključena."</string>
     <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"SD kartica će biti isključena."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Oslobađanje"</string>
@@ -1401,7 +1401,7 @@
     <string name="lockpattern_recording_intro_header" msgid="308287052221942814">"Nacrtajte šablon za otključavanje"</string>
     <string name="lockpattern_recording_intro_footer" msgid="1118579101409152113">"Pritisnite „Meni“ da biste dobili pomoć."</string>
     <string name="lockpattern_recording_inprogress" msgid="6667844062721656773">"Podignite prst kada završite"</string>
-    <string name="lockpattern_recording_incorrect_too_short" msgid="1348234155120957561">"Povežite najmanje <xliff:g id="NUMBER">%d</xliff:g> tačke. Pokušajte ponovo."</string>
+    <string name="lockpattern_recording_incorrect_too_short" msgid="1348234155120957561">"Povežite najmanje <xliff:g id="NUMBER">%d</xliff:g> tačke. Probajte ponovo."</string>
     <string name="lockpattern_pattern_entered_header" msgid="4316818983675591604">"Šablon je snimljen"</string>
     <string name="lockpattern_need_to_confirm" msgid="8054853451639221265">"Ponovo nacrtajte šablon da biste potvrdili"</string>
     <string name="lockpattern_pattern_confirmed_header" msgid="8455614172231880211">"Novi šablon za otključavanje"</string>
@@ -1420,7 +1420,7 @@
     <string name="lockpattern_settings_choose_lock_pattern" msgid="1652352830005653447">"Podešavanje šablona za otključavanje"</string>
     <string name="lockpattern_settings_change_lock_pattern" msgid="1123908306116495545">"Promeni šablon za otključavanje"</string>
     <string name="lockpattern_settings_help_how_to_record" msgid="2614673439060830433">"Kako nacrtati šablon za otključavanje"</string>
-    <string name="lockpattern_too_many_failed_confirmation_attempts" msgid="6909161623701848863">"Previše netačnih pokušaja. Pokušajte ponovo za <xliff:g id="NUMBER">%d</xliff:g> sek."</string>
+    <string name="lockpattern_too_many_failed_confirmation_attempts" msgid="6909161623701848863">"Previše netačnih pokušaja. Probajte ponovo za <xliff:g id="NUMBER">%d</xliff:g> sek."</string>
     <string name="activity_not_found" msgid="5551664692991605325">"Aplikacija nije instalirana na telefonu."</string>
     <string name="lock_settings_profile_title" msgid="2121876391814535295">"Bezbednost profila za Work"</string>
     <string name="lock_settings_profile_screen_lock_title" msgid="3334747927367115256">"Zaključavanje ekrana za profil za Work"</string>
@@ -2313,7 +2313,7 @@
     <string name="vpn_lockdown_summary" msgid="2200032066376720339">"Izaberite VPN profil sa kojim ćete uvek biti povezani. Mrežni sadržaj će biti dozvoljen samo kada ste povezani sa ovim VPN-om."</string>
     <string name="vpn_lockdown_none" msgid="9214462857336483711">"Nijedan"</string>
     <string name="vpn_lockdown_config_error" msgid="3898576754914217248">"Stalno uključeni VPN zahteva IP adresu za server i DNS."</string>
-    <string name="vpn_no_network" msgid="3050233675132726155">"Nije uspostavljena mrežna veza. Pokušajte ponovo kasnije."</string>
+    <string name="vpn_no_network" msgid="3050233675132726155">"Nije uspostavljena mrežna veza. Probajte ponovo kasnije."</string>
     <string name="vpn_missing_cert" msgid="7972907102570411501">"Nedostaje sertifikat. Izmenite profil."</string>
     <string name="trusted_credentials_system_tab" msgid="3984284264816924534">"Sistem"</string>
     <string name="trusted_credentials_user_tab" msgid="2244732111398939475">"Korisnik"</string>
@@ -2544,6 +2544,9 @@
       <item quantity="few">Prikaži %d skrivene stavke</item>
       <item quantity="other">Prikaži %d skrivenih stavki</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Podešavanja"</string>
     <string name="search_menu" msgid="6283419262313758339">"Pretražite podešavanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Podešavanja pretrage"</string>
@@ -2594,7 +2597,7 @@
     <string name="setup_wifi_nfc_tag" msgid="9028353016222911016">"Podesite Wi-Fi NFC oznaku"</string>
     <string name="write_tag" msgid="8571858602896222537">"Napiši"</string>
     <string name="status_awaiting_tap" msgid="2130145523773160617">"Dodirnite oznaku da biste pisali..."</string>
-    <string name="status_invalid_password" msgid="2575271864572897406">"Lozinka je nevažeća. Pokušajte ponovo."</string>
+    <string name="status_invalid_password" msgid="2575271864572897406">"Lozinka je nevažeća. Probajte ponovo."</string>
     <string name="status_write_success" msgid="5228419086308251169">"Uspeli ste!"</string>
     <string name="status_failed_to_write" msgid="8072752734686294718">"Nije moguće pisanje podataka u NFC oznaku. Ako se problem i dalje javlja, pokušajte sa drugom oznakom"</string>
     <string name="status_tag_not_writable" msgid="2511611539977682175">"NFC oznaka ne podržava pisanje. Koristite drugu oznaku."</string>
diff --git a/res/values-be-rBY/strings.xml b/res/values-be-rBY/strings.xml
index 955717f..94c5cd7 100644
--- a/res/values-be-rBY/strings.xml
+++ b/res/values-be-rBY/strings.xml
@@ -2566,6 +2566,9 @@
       <item quantity="many">Паказаць %d схаваных элементаў</item>
       <item quantity="other">Паказаць %d схаванага элемента</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Сетка і інтэрнэт"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Налады"</string>
     <string name="search_menu" msgid="6283419262313758339">"Налады пошуку"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Налады пошуку"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index e953daa..025185b 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Показване на %d скрити елемента</item>
       <item quantity="one">Показване на %d скрит елемент</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и интернет"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Настройки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Търсете в настройките"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Настройки за търсене"</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index d0488a1..a97819b 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">%dটি লুকানো আইটেম দেখান</item>
       <item quantity="other">%dটি লুকানো আইটেম দেখান</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"সেটিংস"</string>
     <string name="search_menu" msgid="6283419262313758339">"অনুসন্ধান সেটিংস"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"অনুসন্ধান সেটিংস"</string>
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
index b43e463..0ff7283 100644
--- a/res/values-bs-rBA/strings.xml
+++ b/res/values-bs-rBA/strings.xml
@@ -2544,6 +2544,9 @@
       <item quantity="few">Prikaži %d skrivene stavke</item>
       <item quantity="other">Prikaži %d skrivenih stavki</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Postavke"</string>
     <string name="search_menu" msgid="6283419262313758339">"Postavke pretraživanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Postavke pretraživanja"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 19420f4..41b9f7c 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Mostra %d elements amagats</item>
       <item quantity="one">Mostra %d element amagat</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Xarxa i Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Configuració"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuració de la cerca"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configuració de la cerca"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 3e91ee7..aab8f9a 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -2566,6 +2566,9 @@
       <item quantity="other">Zobrazit %d skrytých položek</item>
       <item quantity="one">Zobrazit %d skrytou položku</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Síť a internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Nastavení"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavení vyhledávání"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Vyhledávání nastavení"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index d43e00c..d33c683 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -371,7 +371,7 @@
     <string name="setup_fingerprint_enroll_enrolling_skip_title" msgid="6808422329107426923">"Vil du springe registrering af fingeraftryk over?"</string>
     <string name="setup_fingerprint_enroll_enrolling_skip_message" msgid="274849306857859783">"Du har valgt at bruge fingeraftryk som en metode til at låse din telefon op. Hvis du springer det over nu, skal du konfigurere dette senere. Konfigurationen tager kun omkring et minut."</string>
     <string name="security_settings_fingerprint_enroll_setup_screen_lock" msgid="1195743489835505376">"Konfigurer skærmlås"</string>
-    <string name="security_settings_fingerprint_enroll_done" msgid="4014607378328187567">"Færdig"</string>
+    <string name="security_settings_fingerprint_enroll_done" msgid="4014607378328187567">"Udfør"</string>
     <string name="security_settings_fingerprint_enroll_touch_dialog_title" msgid="1863561601428695160">"Hov! Dette er ikke sensoren"</string>
     <string name="security_settings_fingerprint_enroll_touch_dialog_message" msgid="5053971232594165142">"Brug fingeraftrykssensoren på din enhed."</string>
     <string name="security_settings_fingerprint_enroll_error_dialog_title" msgid="3618021988442639280">"Registreringen kunne ikke gennemføres"</string>
@@ -2522,6 +2522,10 @@
       <item quantity="one">Vis %d skjult element</item>
       <item quantity="other">Vis %d skjulte elementer</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Indstillinger"</string>
     <string name="search_menu" msgid="6283419262313758339">"Søgeindstillinger"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Indstillinger for søgning"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 9a09384..f1228f4 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -111,9 +111,9 @@
     <string name="bluetooth_device" msgid="5291950341750186887">"Unbenanntes Bluetooth-Gerät"</string>
     <string name="progress_scanning" msgid="192587958424295789">"Suche läuft"</string>
     <string name="bluetooth_no_devices_found" msgid="1085232930277181436">"Kein Bluetooth-Gerät in der Nähe gefunden"</string>
-    <string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Bluetooth-Pairing-Anfrage"</string>
-    <string name="bluetooth_notif_title" msgid="2485175521845371514">"Pairing-Anfrage"</string>
-    <string name="bluetooth_notif_message" msgid="5057417127600942904">"Für Pairing mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> tippen."</string>
+    <string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Anfrage zur Bluetooth-Kopplung"</string>
+    <string name="bluetooth_notif_title" msgid="2485175521845371514">"Kopplungsanfrage"</string>
+    <string name="bluetooth_notif_message" msgid="5057417127600942904">"Für Kopplung mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> tippen."</string>
     <string name="bluetooth_show_received_files" msgid="5164787486105868895">"Empfangene Dateien anzeigen"</string>
     <string name="device_picker" msgid="4978696506172252813">"Bluetooth-Gerät auswählen"</string>
     <string name="bluetooth_ask_enablement" msgid="3387222809404177525">"<xliff:g id="APP_NAME">%1$s</xliff:g> fordert die Berechtigung, Bluetooth zu aktivieren"</string>
@@ -560,18 +560,18 @@
     <string name="bluetooth_settings" msgid="1810521656168174329">"Bluetooth"</string>
     <string name="bluetooth_settings_title" msgid="1908745291161353016">"Bluetooth"</string>
     <string name="bluetooth_settings_summary" msgid="2091062709530570462">"Verbindungen, Gerätenamen und Erkennbarkeit verwalten"</string>
-    <string name="bluetooth_pairing_request" msgid="2605098826364694673">"Pairing mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> durchführen?"</string>
-    <string name="bluetooth_pairing_key_msg" msgid="418124944140102021">"Bluetooth-Pairing-Code"</string>
-    <string name="bluetooth_enter_passkey_msg" msgid="6813273136442138444">"Gib den Pairing-Code ein und tippe dann auf die Eingabetaste."</string>
+    <string name="bluetooth_pairing_request" msgid="2605098826364694673">"Mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> koppeln?"</string>
+    <string name="bluetooth_pairing_key_msg" msgid="418124944140102021">"Bluetooth-Kopplungscode"</string>
+    <string name="bluetooth_enter_passkey_msg" msgid="6813273136442138444">"Gib den Kopplungscode ein und tippe dann auf die Eingabetaste."</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="7222713483058171357">"Die PIN enthält Buchstaben oder Symbole."</string>
     <string name="bluetooth_pin_values_hint" msgid="3815897557875873646">"In der Regel 0000 oder 1234"</string>
     <string name="bluetooth_pin_values_hint_16_digits" msgid="7849359451584101077">"Muss aus 16 Ziffern bestehen"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="4637977124526813470">"Möglicherweise musst du diese PIN auch auf dem anderen Gerät eingeben."</string>
     <string name="bluetooth_enter_passkey_other_device" msgid="2798719004030279602">"Möglicherweise musst du diesen Zugangscode auch auf dem anderen Gerät eingeben."</string>
-    <!-- syntax error in translation for bluetooth_confirm_passkey_msg (3708312912841950052) org.xmlpull.v1.XmlPullParserException: name expected (position:START_TAG <null>@1:239 in     <string name="bluetooth_confirm_passkey_msg" msgid="3708312912841950052">"Zum Pairing mit:&gt;&lt;b&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/b&gt;&lt;br&gt;&lt;br&gt;Vergewissere dich, dass folgender Zugangscode angezeigt wird:<&lt;br&gt;&lt;b&gt;P<xliff:g id="PASSKEY">%2$s</xliff:g>&lt;/b&gt;."</string>
+    <!-- syntax error in translation for bluetooth_confirm_passkey_msg (3708312912841950052) org.xmlpull.v1.XmlPullParserException: name expected (position:START_TAG <null>@1:240 in     <string name="bluetooth_confirm_passkey_msg" msgid="3708312912841950052">"Zur Kopplung mit:&gt;&lt;b&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/b&gt;&lt;br&gt;&lt;br&gt;Vergewissere dich, dass folgender Zugangscode angezeigt wird:<&lt;br&gt;&lt;b&gt;P<xliff:g id="PASSKEY">%2$s</xliff:g>&lt;/b&gt;."</string>
 )  -->
-    <string name="bluetooth_incoming_pairing_msg" msgid="1615930853859551491">"Von:&lt;br&gt;&lt;b&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/b&gt;&lt;br&gt;&lt;br&gt;Pairing mit diesem Gerät durchführen?"</string>
-    <string name="bluetooth_display_passkey_pin_msg" msgid="2796550001376088433">"Gib zum Pairing mit <xliff:g id="BOLD1_0">&lt;br&gt;&lt;b&gt;</xliff:g><xliff:g id="DEVICE_NAME">%1$s</xliff:g><xliff:g id="END_BOLD1">&lt;/b&gt;&lt;br&gt;&lt;br&gt;</xliff:g> <xliff:g id="BOLD2_1">&lt;br&gt;&lt;b&gt;</xliff:g><xliff:g id="PASSKEY">%2$s</xliff:g><xliff:g id="END_BOLD2">&lt;/b&gt;</xliff:g> ein und drücke anschließend die Eingabetaste."</string>
+    <string name="bluetooth_incoming_pairing_msg" msgid="1615930853859551491">"Von:&lt;br&gt;&lt;b&gt;<xliff:g id="DEVICE_NAME">%1$s</xliff:g>&lt;/b&gt;&lt;br&gt;&lt;br&gt; Mit diesem Gerät koppeln?"</string>
+    <string name="bluetooth_display_passkey_pin_msg" msgid="2796550001376088433">"Gib zur Kopplung mit <xliff:g id="BOLD1_0">&lt;br&gt;&lt;b&gt;</xliff:g><xliff:g id="DEVICE_NAME">%1$s</xliff:g><xliff:g id="END_BOLD1">&lt;/b&gt;&lt;br&gt;&lt;br&gt;</xliff:g> <xliff:g id="BOLD2_1">&lt;br&gt;&lt;b&gt;</xliff:g><xliff:g id="PASSKEY">%2$s</xliff:g><xliff:g id="END_BOLD2">&lt;/b&gt;</xliff:g> ein und drücke anschließend die Eingabetaste."</string>
     <string name="bluetooth_pairing_shares_phonebook" msgid="2277931851483023208">"Zulassen, dass <xliff:g id="DEVICE_NAME">%1$s</xliff:g> auf deine Kontakte und deine Anrufliste zugreifen kann"</string>
     <string name="bluetooth_error_title" msgid="6850384073923533096"></string>
     <string name="bluetooth_connecting_error_message" msgid="1397388344342081090">"Keine Verbindung zu <xliff:g id="DEVICE_NAME">%1$s</xliff:g> möglich"</string>
@@ -579,23 +579,23 @@
     <string name="bluetooth_search_for_devices" msgid="2754007356491461674">"Aktualisieren"</string>
     <string name="bluetooth_searching_for_devices" msgid="9203739709307871727">"Suche läuft..."</string>
     <string name="bluetooth_preference_device_settings" msgid="907776049862799122">"Geräteeinstellungen"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="8875124878198774180">"Pairing-Gerät"</string>
+    <string name="bluetooth_preference_paired_dialog_title" msgid="8875124878198774180">"Gekoppeltes Gerät"</string>
     <string name="bluetooth_preference_paired_dialog_name_label" msgid="8111146086595617285">"Name"</string>
     <string name="bluetooth_preference_paired_dialog_internet_option" msgid="7112953286863428412">"Internetverbindung"</string>
     <string name="bluetooth_preference_paired_dialog_keyboard_option" msgid="2271954176947879628">"Tastatur"</string>
     <string name="bluetooth_preference_paired_dialog_contacts_option" msgid="7747163316331917594">"Kontakte und Anrufliste"</string>
-    <string name="bluetooth_pairing_dialog_title" msgid="1417255032435317301">"Pairing mit diesem Gerät durchführen?"</string>
+    <string name="bluetooth_pairing_dialog_title" msgid="1417255032435317301">"Mit diesem Gerät koppeln?"</string>
     <string name="bluetooth_pairing_dialog_sharing_phonebook_title" msgid="7664141669886358618">"Telefonbuch teilen?"</string>
     <string name="bluetooth_pairing_dialog_contants_request" msgid="5531109163573611348">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> fordert Zugriff auf deine Kontakte und deine Anrufliste an."</string>
-    <string name="bluetooth_pairing_dialog_paring_request" msgid="8451248193517851958">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> möchte ein Bluetooth-Pairing durchführen und hat dann Zugriff auf deine Kontakte und deine Anrufliste."</string>
-    <string name="bluetooth_preference_paired_devices" msgid="1970524193086791964">"Pairing-Geräte"</string>
+    <string name="bluetooth_pairing_dialog_paring_request" msgid="8451248193517851958">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> möchte eine Kopplung über Bluetooth herstellen und hat dann Zugriff auf deine Kontakte und deine Anrufliste."</string>
+    <string name="bluetooth_preference_paired_devices" msgid="1970524193086791964">"Gekoppelte Geräte"</string>
     <string name="bluetooth_preference_found_devices" msgid="1647983835063249680">"Verfügbar"</string>
     <string name="bluetooth_preference_no_found_devices" msgid="7594339669961811591">"Keine Geräte verfügbar"</string>
     <string name="bluetooth_device_context_connect" msgid="3997659895003244941">"Verbinden"</string>
     <string name="bluetooth_device_context_disconnect" msgid="8220072022970148683">"Verbindung trennen"</string>
-    <string name="bluetooth_device_context_pair_connect" msgid="7611522504813927727">"Pairing durchführen und verbinden"</string>
-    <string name="bluetooth_device_context_unpair" msgid="662992425948536144">"Pairing aufheben"</string>
-    <string name="bluetooth_device_context_disconnect_unpair" msgid="7644014238070043798">"Verbindung trennen und Pairing aufheben"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="7611522504813927727">"Kopplung durchführen und verbinden"</string>
+    <string name="bluetooth_device_context_unpair" msgid="662992425948536144">"Entkoppeln"</string>
+    <string name="bluetooth_device_context_disconnect_unpair" msgid="7644014238070043798">"Verbindung trennen und entkoppeln"</string>
     <string name="bluetooth_device_context_connect_advanced" msgid="2643129703569788771">"Optionen..."</string>
     <string name="bluetooth_menu_advanced" msgid="8572178316357220524">"Erweitert"</string>
     <string name="bluetooth_advanced_titlebar" msgid="2142159726881547669">"Bluetooth - Erweitert"</string>
@@ -608,7 +608,7 @@
     <string name="bluetooth_disconnect_pan_user_profile" msgid="8037627994382458698">"Der Internetzugriff über <xliff:g id="DEVICE_NAME">%1$s</xliff:g> wird deaktiviert."</string>
     <string name="bluetooth_disconnect_pan_nap_profile" product="tablet" msgid="1262792320446274407">"Die Freigabe der Internetverbindung dieses Tablets wird für <xliff:g id="DEVICE_NAME">%1$s</xliff:g> deaktiviert."</string>
     <string name="bluetooth_disconnect_pan_nap_profile" product="default" msgid="5700332050175684571">"Die Freigabe der Internetverbindung dieses Telefons wird für <xliff:g id="DEVICE_NAME">%1$s</xliff:g> deaktiviert."</string>
-    <string name="bluetooth_device_advanced_title" msgid="6066342531927499308">"Bluetooth-Gerät mit aktivem Pairing"</string>
+    <string name="bluetooth_device_advanced_title" msgid="6066342531927499308">"Gekoppeltes Bluetooth-Gerät"</string>
     <string name="bluetooth_device_advanced_online_mode_title" msgid="3689050071425683114">"Verbinden"</string>
     <string name="bluetooth_device_advanced_online_mode_summary" msgid="1204424107263248336">"Mit Bluetooth-Gerät verbinden"</string>
     <string name="bluetooth_device_advanced_profile_header_title" msgid="102745381968579605">"Nutzen für"</string>
@@ -2522,6 +2522,9 @@
       <item quantity="other">%d ausgeblendete Elemente anzeigen</item>
       <item quantity="one">%d ausgeblendetes Element anzeigen</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Netzwerk &amp; Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Einstellungen"</string>
     <string name="search_menu" msgid="6283419262313758339">"Sucheinstellungen"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Sucheinstellungen"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 82af487..eac5eaa 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Εμφάνιση %d κρυφών στοιχείων</item>
       <item quantity="one">Εμφάνιση %d κρυφού στοιχείου</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Δίκτυο και διαδίκτυο"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Ρυθμίσεις"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ρυθμίσεις αναζήτησης"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Ρυθμίσεις αναζήτησης"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 8b7073c..b96d10a 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Show %d hidden items</item>
       <item quantity="one">Show %d hidden item</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Search settings"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index ad0cd98e..568ab05 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Show %d hidden items</item>
       <item quantity="one">Show %d hidden item</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Search settings"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index ad0cd98e..568ab05 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Show %d hidden items</item>
       <item quantity="one">Show %d hidden item</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Search settings"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 24d4a29..667ec4c 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Mostrar %d elementos ocultos</item>
       <item quantity="one">Mostrar %d elemento oculto</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Internet y red"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Configuración"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuración de búsqueda"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configuración de búsqueda"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index f7eeeff..a22c406 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -2520,6 +2520,9 @@
       <item quantity="other">Mostrar %d elementos ocultos</item>
       <item quantity="one">Mostrar %d elemento oculto</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Red e Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Ajustes"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ajustes de búsqueda"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Ajustes de búsqueda"</string>
@@ -3067,7 +3070,7 @@
     <string name="condition_battery_summary" msgid="4418839236027977450">"Ha disminuido el rendimiento. Las conexiones automáticas y los servicios de ubicación están desactivados."</string>
     <string name="condition_cellular_title" msgid="2398754272044917264">"Datos móviles desactivados"</string>
     <string name="condition_cellular_summary" msgid="1818046558419658463">"Internet solo está disponible a través de redes Wi-Fi"</string>
-    <string name="condition_bg_data_title" msgid="2483860304802846542">"Economizador de Datos activado"</string>
+    <string name="condition_bg_data_title" msgid="2483860304802846542">"Ahorro de datos activado"</string>
     <string name="condition_bg_data_summary" msgid="656957852895282228">"Las conexiones automáticas solo están disponibles a través de redes Wi-Fi. Si la conexión Wi-Fi no está disponible, algunas aplicaciones o algunos servicios pueden verse afectados."</string>
     <string name="condition_work_title" msgid="7293722361184366648">"Perfil de trabajo desactivado"</string>
     <string name="condition_work_summary" msgid="7543202177571590378">"Las aplicaciones, la sincronización en segundo plano y otras funciones relacionadas con tu perfil de trabajo están desactivadas."</string>
@@ -3105,16 +3108,16 @@
     <string name="configure" msgid="1029654422228677273">"Configurar"</string>
     <string name="data_usage_other_apps" msgid="3272872663517382050">"Otras aplicaciones incluidas en el uso"</string>
     <plurals name="data_saver_unrestricted_summary" formatted="false" msgid="2635267833484232703">
-      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> aplicaciones pueden usar datos no restringidos cuando el Economizador de Datos está activado</item>
-      <item quantity="one">1 aplicación puede usar datos no restringidos cuando el Economizador de Datos está activado</item>
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> aplicaciones pueden usar datos no restringidos cuando el ahorro de datos está activado</item>
+      <item quantity="one">1 aplicación puede usar datos no restringidos cuando el ahorro de datos está activado</item>
     </plurals>
-    <string name="data_saver_title" msgid="398458827917495765">"Economizador de Datos"</string>
+    <string name="data_saver_title" msgid="398458827917495765">"Ahorro de datos"</string>
     <string name="unrestricted_data_saver" msgid="7019858887510062789">"Acceso a datos no restringidos"</string>
     <string name="restrict_background_blacklisted" msgid="3995443391711013068">"Las conexiones automáticas están desactivadas"</string>
     <string name="data_saver_on" msgid="6774217590237934709">"Sí"</string>
     <string name="data_saver_off" msgid="6892309031162738794">"No"</string>
     <string name="unrestricted_app_title" msgid="4465437191723332066">"Uso de datos no restringidos"</string>
-    <string name="unrestricted_app_summary" msgid="6458008993501723912">"No restringir datos si el Economizador de Datos está activado"</string>
+    <string name="unrestricted_app_summary" msgid="6458008993501723912">"No restringir datos si el ahorra de datos está activado"</string>
     <string name="home_app" msgid="4066188520886810030">"Aplicación de inicio"</string>
     <string name="no_default_home" msgid="7184117487704520238">"Sin aplicación de inicio predeterminada"</string>
     <string name="lockpattern_settings_require_cred_before_startup" msgid="3832020101401318248">"Inicio seguro"</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 2866ae9..a84c007 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Kuva %d peidetud üksust</item>
       <item quantity="one">Kuva %d peidetud üksus</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Võrk ja Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Seaded"</string>
     <string name="search_menu" msgid="6283419262313758339">"Otsingu seaded"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Otsinguseaded"</string>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 20088ce..3fd2ca4 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -777,9 +777,9 @@
     <string name="wifi_cancel" msgid="6763568902542968964">"Utzi"</string>
     <string name="wifi_skip_anyway" msgid="6965361454438011190">"Saltatu halere"</string>
     <string name="wifi_dont_skip" msgid="3615535136327231588">"Atzera"</string>
-    <string name="wifi_skipped_message" product="tablet" msgid="6761689889733331124">"KONTUZ: ez baduzu aktibatzen Wi‑Fi konexioa, tabletak datu mugikorrak soilik erabiliko ditu hasierako deskargak edo eguneratzeak egiteko. Datuengatiko kostuak ekiditeko, konektatu Wi-Fi sare batera."</string>
-    <string name="wifi_skipped_message" product="device" msgid="1385490367826852775">"KONTUZ: ez baduzu aktibatzen Wi‑Fi konexioa, gailuak datu mugikorrak soilik erabiliko ditu hasierako deskargak edo eguneratzeak egiteko. Datuengatiko kostuak ekiditeko, konektatu Wi-Fi sare batera."</string>
-    <string name="wifi_skipped_message" product="default" msgid="6084295135297772350">"KONTUZ: ez baduzu aktibatzen Wi‑Fi konexioa, telefonoak datu mugikorrak soilik erabiliko ditu hasierako deskargak edo eguneratzeak egiteko. Datuengatiko kostuak ekiditeko, konektatu Wi-Fi sare batera."</string>
+    <string name="wifi_skipped_message" product="tablet" msgid="6761689889733331124">"ABISUA: ez baduzu aktibatzen Wi‑Fi konexioa, tabletak datu mugikorrak soilik erabiliko ditu hasierako deskargak edo eguneratzeak egiteko. Datuengatiko kostuak ekiditeko, konektatu Wi-Fi sare batera."</string>
+    <string name="wifi_skipped_message" product="device" msgid="1385490367826852775">"ABISUA: ez baduzu aktibatzen Wi‑Fi konexioa, gailuak datu mugikorrak soilik erabiliko ditu hasierako deskargak edo eguneratzeak egiteko. Datuengatiko kostuak ekiditeko, konektatu Wi-Fi sare batera."</string>
+    <string name="wifi_skipped_message" product="default" msgid="6084295135297772350">"ABISUA: ez baduzu aktibatzen Wi‑Fi konexioa, telefonoak datu mugikorrak soilik erabiliko ditu hasierako deskargak edo eguneratzeak egiteko. Datuengatiko kostuak ekiditeko, konektatu Wi-Fi sare batera."</string>
     <string name="wifi_and_mobile_skipped_message" product="tablet" msgid="6324917391996718760">"Wi‑Fi sarera konektatzeko urratsa saltatzen baduzu:\n\n"<li>"Tableta ez da konektatuko Internetera."</li>\n\n<li>"Ez duzu jasoko software-eguneratzerik Internetera konektatzen zaren arte."</li>\n\n<li>"Ezin izango dituzu aktibatu gailuaren babes-eginbideak."</li></string>
     <string name="wifi_and_mobile_skipped_message" product="device" msgid="1110629752293998468">"Wi‑Fi sarera konektatzeko urratsa saltatzen baduzu:\n\n"<li>"Gailua ez da konektatuko Internetera."</li>\n\n<li>"Ez duzu jasoko software-eguneratzerik Internetera konektatzen zaren arte."</li>\n\n<li>"Ezin izango dituzu aktibatu gailuaren babes-eginbideak."</li></string>
     <string name="wifi_and_mobile_skipped_message" product="default" msgid="8271524692702309267">"Wi‑Fi sarera konektatzeko urratsa saltatzen baduzu:\n\n"<li>"Telefonoa ez da konektatuko Internetera."</li>\n\n<li>"Ez duzu jasoko software-eguneratzerik Internetera konektatzen zaren arte."</li>\n\n<li>"Ezin izango dituzu aktibatu gailuaren babes-eginbideak."</li></string>
@@ -2522,6 +2522,10 @@
       <item quantity="other">Erakutsi %d elementu ezkutu</item>
       <item quantity="one">Erakutsi %d elementu ezkutu</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Ezarpenak"</string>
     <string name="search_menu" msgid="6283419262313758339">"Bilaketa-ezarpenak"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Bilaketa-ezarpenak"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index e3de165..e09b877 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">‏نمایش %d مورد پنهان</item>
       <item quantity="other">‏نمایش %d مورد پنهان</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"تنظیمات"</string>
     <string name="search_menu" msgid="6283419262313758339">"تنظیمات جستجو"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"تنظیمات جستجو"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 1ab8e1e..6581bf0 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Näytä %d piilotettua kohdetta</item>
       <item quantity="one">Näytä %d piilotettu kohde</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Verkko ja internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Asetukset"</string>
     <string name="search_menu" msgid="6283419262313758339">"Hakuasetukset"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Hakuasetukset"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 59dd223..bb15810 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">Afficher %d élément masqué</item>
       <item quantity="other">Afficher %d éléments masqués</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Paramètres"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paramètres de recherche"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Paramètres de recherche"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index adc4da2..803d247 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">Afficher %d élément masqué</item>
       <item quantity="other">Afficher %d éléments masqués</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Paramètres"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paramètres de recherche"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Paramètres de recherche"</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 0266dbe..89e2b6f 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Mostrar %d elementos ocultos</item>
       <item quantity="one">Mostrar %d elemento oculto</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Configuración"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuración de busca"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configuración de busca"</string>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index bd8fb65..2180f08 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -2524,6 +2524,10 @@
       <item quantity="one">%d છુપાયેલ આઇટમ બતાવો</item>
       <item quantity="other">%d છુપાયેલ આઇટમ બતાવો</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"સેટિંગ્સ"</string>
     <string name="search_menu" msgid="6283419262313758339">"શોધ સેટિંગ્સ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"શોધ સેટિંગ્સ"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 88fec25..3263c4b 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="one">छिपे हुए %d आइटम दिखाएं</item>
       <item quantity="other">छिपे हुए %d आइटम दिखाएं</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"नेटवर्क और इंटरनेट"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"सेटिंग"</string>
     <string name="search_menu" msgid="6283419262313758339">"खोज सेटिंग"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"खोज सेटिंग"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 20676dc..00f3d46 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -2544,6 +2544,9 @@
       <item quantity="few">Prikaži %d skrivene stavke</item>
       <item quantity="other">Prikaži %d skrivenih stavki</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Postavke"</string>
     <string name="search_menu" msgid="6283419262313758339">"Postavke pretraživanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Postavke pretraživanja"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 2545cf8..8001a1b 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">%d rejtett elem megjelenítése</item>
       <item quantity="one">%d rejtett elem megjelenítése</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Beállítások"</string>
     <string name="search_menu" msgid="6283419262313758339">"Keresési beállítások"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Keresési beállítások"</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 8f55c42..a594196 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="one">Show %d hidden items</item>
       <item quantity="other">Ցույց տալ %d թաքնված տարրեր</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Ցանց և ինտերնետ"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Կարգավորումներ"</string>
     <string name="search_menu" msgid="6283419262313758339">"Որոնման կարգավորումներ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Որոնման կարգավորումներ"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 15d7bad..f39d1ca 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Tampilkan %d item tersembunyi</item>
       <item quantity="one">Tampilkan %d item tersembunyi</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Jaringan &amp; Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Setelan"</string>
     <string name="search_menu" msgid="6283419262313758339">"Setelan penelusuran"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Setelan penelusuran"</string>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 7c7ec07..c053fce 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="one">Sýna %d falið atriði</item>
       <item quantity="other">Sýna %d falin atriði</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Netkerfi og internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Stillingar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Leitarstillingar"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Leitarstillingar"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 3296461..c51cea9 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Mostra %d elementi nascosti</item>
       <item quantity="one">Mostra %d elemento nascosto</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Rete e Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Impostazioni"</string>
     <string name="search_menu" msgid="6283419262313758339">"Impostazioni di ricerca"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Impostazioni di ricerca"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 64828ba..32d4503 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -2568,6 +2568,10 @@
       <item quantity="other">‏הצג %d פריטים מוסתרים</item>
       <item quantity="one">‏הצג פריט %d מוסתר</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"הגדרות"</string>
     <string name="search_menu" msgid="6283419262313758339">"הגדרות חיפוש"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"הגדרות חיפוש"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 35aef83..a92f2ac 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -2526,6 +2526,10 @@
       <item quantity="other">%d 件の非表示のアイテムを表示</item>
       <item quantity="one">%d 件の非表示のアイテムを表示</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"検索設定"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"検索設定"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index b04fd44..4a60fe7 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">%d დამალული ერთეულის ჩვენება</item>
       <item quantity="one">%d დამალული ერთეულის ჩვენება</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"ქსელი და ინტერნეტი"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"პარამეტრები"</string>
     <string name="search_menu" msgid="6283419262313758339">"ძიების პარამეტრები"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ძიების პარამეტრები"</string>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 3b44ae9..bde0e2a 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">%d жасырын элементті көрсету</item>
       <item quantity="one">%d жасырын элементті көрсету</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Желі және интернет"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Параметрлер"</string>
     <string name="search_menu" msgid="6283419262313758339">"Іздеу параметрлері"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Іздеу параметрлері"</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 744c33c..e322c82 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">បង្ហាញធាតុ %d ដែលបានលាក់</item>
       <item quantity="one">បង្ហាញធាតុ %d ដែលបានលាក់</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"ការកំណត់"</string>
     <string name="search_menu" msgid="6283419262313758339">"ការកំណត់ការស្វែងរក"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"កំណត់​ការ​​ស្វែងរក"</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 056b5cb..c04b861 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">%d ಮರೆಮಾಡಲಾದ ಐಟಂಗಳನ್ನು ತೋರಿಸಿ</item>
       <item quantity="other">%d ಮರೆಮಾಡಲಾದ ಐಟಂಗಳನ್ನು ತೋರಿಸಿ</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="search_menu" msgid="6283419262313758339">"ಹುಡುಕಾಟ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ಹುಡುಕಾಟ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 045972e..00b2048 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">%d개의 숨겨진 항목 표시</item>
       <item quantity="one">%d개의 숨겨진 항목 표시</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"설정"</string>
     <string name="search_menu" msgid="6283419262313758339">"검색 설정"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"검색 설정"</string>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 020f20b..776529d 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -2521,6 +2521,9 @@
       <item quantity="other">Жашырылган %d нерсе көрсөтүлсүн</item>
       <item quantity="one">Жашырылган %d нерсе көрсөтүлсүн</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Тармак жана Интернет"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Жөндөөлөр"</string>
     <string name="search_menu" msgid="6283419262313758339">"Издөө жөндөөлөрү"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Издөө жөндөөлөрү"</string>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index afe4ce4..929aa93 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">ສະແດງ %d ລາຍການທີ່ເຊື່ອງໄວ້</item>
       <item quantity="one">ສະແດງ %d ລາຍການທີ່ເຊື່ອງໄວ້</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"​ການ​ຕັ້ງ​ຄ່າ"</string>
     <string name="search_menu" msgid="6283419262313758339">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ຊອກ​ຫາ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ຊອກ​ຫາ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 5c9b0c7..d61c372 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -1019,7 +1019,7 @@
     <string name="sim_enter_ok" msgid="6475946836899218919">"Gerai"</string>
     <string name="sim_enter_cancel" msgid="6240422158517208036">"Atšaukti"</string>
     <string name="sim_multi_sims_title" msgid="9159427879911231239">"Rastos kelios SIM"</string>
-    <string name="sim_multi_sims_summary" msgid="7018740080801483990">"Pasirinkite norimą SIM korinio ryšio duomenims."</string>
+    <string name="sim_multi_sims_summary" msgid="7018740080801483990">"Pasirinkite norimą SIM mobiliojo ryšio duomenims."</string>
     <string name="sim_change_data_title" msgid="294357201685244532">"Keisti duomenų SIM?"</string>
     <string name="sim_change_data_message" msgid="1313940695939674633">"Korinio ryšio duomenims naudoti <xliff:g id="NEW_SIM">%1$s</xliff:g> vietoje <xliff:g id="OLD_SIM">%2$s</xliff:g>?"</string>
     <string name="sim_preferred_title" msgid="5567909634636045268">"Atnauj. pageid. SIM kortelę?"</string>
@@ -1246,7 +1246,7 @@
     <string name="menu_restore" msgid="8260067415075573273">"Nustatyti iš naujo į numatytuosius nustatymus"</string>
     <string name="restore_default_apn_completed" msgid="2824775307377604897">"Numatytųjų APN nustatymų nustatymas iš naujo baigtas."</string>
     <string name="reset_network_title" msgid="4557113742173895074">"Tinklo nustatymų nustatymas iš naujo"</string>
-    <string name="reset_network_desc" msgid="581668983587311282">"Bus ištrinti visi tinklo nustatymai, įskaitant:\n\n"<li>"„Wi‑Fi“"</li>\n<li>"korinio ryšio duomenis"</li>\n<li>"„Bluetooth“"</li></string>
+    <string name="reset_network_desc" msgid="581668983587311282">"Bus ištrinti visi tinklo nustatymai, įskaitant:\n\n"<li>"„Wi‑Fi“"</li>\n<li>"mobiliojo ryšio duomenis"</li>\n<li>"„Bluetooth“"</li></string>
     <string name="reset_network_button_text" msgid="2035676527471089853">"Nustatyti iš naujo"</string>
     <string name="reset_network_final_desc" msgid="6388371121099245116">"Iš naujo nustatyti visus tinklo nustatymus? Šio veiksmo negalėsite anuliuoti!"</string>
     <string name="reset_network_final_button_text" msgid="1797434793741744635">"Nustatyti iš naujo"</string>
@@ -2225,7 +2225,7 @@
     <string name="data_usage_label_foreground" msgid="4938034231928628164">"Priekinis planas"</string>
     <string name="data_usage_label_background" msgid="3225844085975764519">"Fonas"</string>
     <string name="data_usage_app_restricted" msgid="3568465218866589705">"ribotas"</string>
-    <string name="data_usage_disable_mobile" msgid="2613595056882494652">"Išjungti korinio ryšio duomenis?"</string>
+    <string name="data_usage_disable_mobile" msgid="2613595056882494652">"Išjungti mobiliojo ryšio duomenis?"</string>
     <string name="data_usage_disable_mobile_limit" msgid="3934211003105066167">"Nust. kor. ryš. duom. apr."</string>
     <string name="data_usage_disable_4g_limit" msgid="6233554774946681175">"Nustatyti 4G duomenų apribojimą"</string>
     <string name="data_usage_disable_3g_limit" msgid="2558557840444266906">"Nustatyti 2G–3G duomenų apribojimą"</string>
@@ -2248,7 +2248,7 @@
     <string name="data_usage_app_restrict_background_summary_disabled" msgid="1446565717342917727">"Kad aprib. šios progr. fon. duom., pirm. nustat. kor. duom. apr."</string>
     <string name="data_usage_app_restrict_dialog_title" msgid="1613108390242737923">"Apriboti foninius duomenis?"</string>
     <string name="data_usage_app_restrict_dialog" msgid="5871168521456832764">"Dėl šios funkcijos, kai pasiekiami tik koriniai tinklai, gali neveikti programos, kurių veikimas priklauso nuo foninių duomenų.\n\nProgramos nustatymuose galite rasti tinkamesnių duomenų naudojimo valdiklių."</string>
-    <string name="data_usage_restrict_denied_dialog" msgid="1493134803720421674">"Apriboti foninius duomenis galima tik nustačius korinio ryšio duomenų apribojimą."</string>
+    <string name="data_usage_restrict_denied_dialog" msgid="1493134803720421674">"Apriboti foninius duomenis galima tik nustačius mobiliojo ryšio duomenų apribojimą."</string>
     <string name="data_usage_auto_sync_on_dialog_title" msgid="2438617846762244389">"Įjungti autom. sinchronizavimą?"</string>
     <string name="data_usage_auto_sync_on_dialog" product="tablet" msgid="8581983093524041669">"Bet kokie paskyrų pakeitimai, kuriuos atliekate žiniatinklyje, bus automatiškai nukopijuoti į planšetinį kompiuterį.\n\nIš kai kurių paskyrų į žiniatinklį gali būti automatiškai kopijuojami visi planšetiniame kompiuteryje atlikti pakeitimai. Taip pat daroma ir „Google“ paskyroje."</string>
     <string name="data_usage_auto_sync_on_dialog" product="default" msgid="8651376294887142858">"Bet kokie paskyrų pakeitimai, kuriuos atliekate žiniatinklyje, bus automatiškai nukopijuoti į telefoną.\n\nIš kai kurių paskyrų į žiniatinklį gali būti automatiškai kopijuojami visi telefone atlikti pakeitimai. Taip pat daroma ir „Google“ paskyroje."</string>
@@ -2260,12 +2260,12 @@
     <string name="data_usage_warning_editor_title" msgid="3704136912240060339">"Nustatyti duomenų naudojimo įspėjimą"</string>
     <string name="data_usage_limit_editor_title" msgid="9153595142385030015">"Nustatyti duomenų naudojimo apribojimą"</string>
     <string name="data_usage_limit_dialog_title" msgid="3023111643632996097">"Duomenų naudojimo ribojimas"</string>
-    <string name="data_usage_limit_dialog_mobile" product="tablet" msgid="5788774061143636263">"Pasiekus nustatytą apribojimą planšetiniame kompiuteryje bus išjungti korinio ryšio duomenys.\n\nKadangi sunaudoti duomenys skaičiuojami pagal telefoną ir operatorius gali apskaičiuoti kitaip, apsvarstykite galimybę nustatyti mažesnį apribojimą."</string>
-    <string name="data_usage_limit_dialog_mobile" product="default" msgid="3511301596446820549">"Pasiekus nustatytą apribojimą telefone bus išjungti korinio ryšio duomenys.\n\nKadangi sunaudoti duomenys skaičiuojami pagal telefoną ir operatorius gali apskaičiuoti kitaip, apsvarstykite galimybę nustatyti mažesnį apribojimą."</string>
+    <string name="data_usage_limit_dialog_mobile" product="tablet" msgid="5788774061143636263">"Pasiekus nustatytą apribojimą planšetiniame kompiuteryje bus išjungti mobiliojo ryšio duomenys.\n\nKadangi sunaudoti duomenys skaičiuojami pagal telefoną ir operatorius gali apskaičiuoti kitaip, apsvarstykite galimybę nustatyti mažesnį apribojimą."</string>
+    <string name="data_usage_limit_dialog_mobile" product="default" msgid="3511301596446820549">"Pasiekus nustatytą apribojimą telefone bus išjungti mobiliojo ryšio duomenys.\n\nKadangi sunaudoti duomenys skaičiuojami pagal telefoną ir operatorius gali apskaičiuoti kitaip, apsvarstykite galimybę nustatyti mažesnį apribojimą."</string>
     <string name="data_usage_restrict_background_title" msgid="2201315502223035062">"Apriboti foninius duomenis?"</string>
-    <string name="data_usage_restrict_background" msgid="6264965779074729381">"Jei apribosite korinio ryšio foninius duomenis, kai kurios programos ir paslaugos neveiks, nebent prisijungsite prie „Wi-Fi“ tinklo."</string>
-    <string name="data_usage_restrict_background_multiuser" product="tablet" msgid="7954930300449415764">"Jei apribosite korinio ryšio foninius duomenis, kai kurios programos ir paslaugos neveiks, nebent prisijungsite prie „Wi-Fi“ tinklo.\n\nŠis nustatymas taikomas visiems šio planšetinio kompiuterio naudotojams."</string>
-    <string name="data_usage_restrict_background_multiuser" product="default" msgid="259958321968870600">"Jei apribosite korinio ryšio foninius duomenis, kai kurios programos ir paslaugos neveiks, nebent prisijungsite prie „Wi-Fi“ tinklo.\n\nŠis nustatymas taikomas visiems šio telefono naudotojams."</string>
+    <string name="data_usage_restrict_background" msgid="6264965779074729381">"Jei apribosite mobiliojo ryšio foninius duomenis, kai kurios programos ir paslaugos neveiks, nebent prisijungsite prie „Wi-Fi“ tinklo."</string>
+    <string name="data_usage_restrict_background_multiuser" product="tablet" msgid="7954930300449415764">"Jei apribosite mobiliojo ryšio foninius duomenis, kai kurios programos ir paslaugos neveiks, nebent prisijungsite prie „Wi-Fi“ tinklo.\n\nŠis nustatymas taikomas visiems šio planšetinio kompiuterio naudotojams."</string>
+    <string name="data_usage_restrict_background_multiuser" product="default" msgid="259958321968870600">"Jei apribosite mobiliojo ryšio foninius duomenis, kai kurios programos ir paslaugos neveiks, nebent prisijungsite prie „Wi-Fi“ tinklo.\n\nŠis nustatymas taikomas visiems šio telefono naudotojams."</string>
     <string name="data_usage_sweep_warning" msgid="6387081852568846982"><font size="18">"<xliff:g id="NUMBER">^1</xliff:g>"</font>" "<font size="9">"<xliff:g id="UNIT">^2</xliff:g>"</font>\n<font size="12">"įspėjimas"</font></string>
     <string name="data_usage_sweep_limit" msgid="860566507375933039"><font size="18">"<xliff:g id="NUMBER">^1</xliff:g>"</font><font size="9">"<xliff:g id="UNIT">^2</xliff:g>"</font>\n<font size="12">"apribojimas"</font></string>
     <string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Pašalintos programos"</string>
@@ -2566,6 +2566,9 @@
       <item quantity="many">Rodyti %d paslėpto elemento</item>
       <item quantity="other">Rodyti %d paslėptų elementų</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Tinkas ir internetas"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Nustatymai"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paieškos nustatymai"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Paieškos nustatymai"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 2875825..3bde22c 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -2544,6 +2544,10 @@
       <item quantity="one">Rādīt %d slēptu vienumu</item>
       <item quantity="other">Rādīt %d slēptus vienumus</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Iestatījumi"</string>
     <string name="search_menu" msgid="6283419262313758339">"Meklēšanas iestatījumi"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Meklēšanas iestatījumi"</string>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index 416e650..e923fff 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">Прикажи %d сокриена ставка</item>
       <item quantity="other">Прикажи %d сокриени ставки</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Поставки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Поставки за пребарување"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Поставки за пребарување"</string>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index ad835c4..df0b42d 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">മറച്ച %d ഇനങ്ങൾ കാണിക്കുക</item>
       <item quantity="one">മറച്ച %d ഇനം കാണിക്കുക</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"ക്രമീകരണം"</string>
     <string name="search_menu" msgid="6283419262313758339">"തിരയൽ ക്രമീകരണം"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"തിരയൽ ക്രമീകരണങ്ങൾ"</string>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 566586b..4d97773 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">Нуусан %d зүйлийг харуулах</item>
       <item quantity="one">Нуусан %d зүйлийг харуулах</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Тохиргоо"</string>
     <string name="search_menu" msgid="6283419262313758339">"Хайлтын тохиргоо"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Хайлтын тохиргоо"</string>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 66908c5..ca64607 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">%d लपविलेला आयटम दर्शवा</item>
       <item quantity="other">%d लपविलेले आयटम दर्शवा</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"सेटिंग्ज"</string>
     <string name="search_menu" msgid="6283419262313758339">"शोध सेटिंग्ज"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"शोध सेटिंग्ज"</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index f95db4d..18655cb 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">Tunjukkan %d item yang tersembunyi</item>
       <item quantity="one">Tunjukkan %d item yang tersembunyi</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Tetapan"</string>
     <string name="search_menu" msgid="6283419262313758339">"Tetapan carian"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Tetapan carian"</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 74abad5..976bbad 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">ဖျောက်ထားသည့် %d ခုကို ပြပါ</item>
       <item quantity="one">ဖျောက်ထားသည့် %d ခုကို ပြပါ</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"ကွန်ရန်နှင့် အင်တာနက်"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"ဆက်တင်များ"</string>
     <string name="search_menu" msgid="6283419262313758339">"ရှာဖွေမှု ဆက်တင်များ"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ရှာဖွေမှု ဆက်တင်များ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 03eb294..cc15f65 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Vis %d skjulte elementer</item>
       <item quantity="one">Vis %d skjult element</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Nettverk og Internett"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Innstillinger"</string>
     <string name="search_menu" msgid="6283419262313758339">"Søkeinnstillinger"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Søkeinnstillinger"</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 96ef684..5f122ec 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">लुकाइएका %d वस्तुहरू देखाउनुहोस्</item>
       <item quantity="one">लुकाइएको %d वस्तु देखाउनुहोस्</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"सेटिङहरू"</string>
     <string name="search_menu" msgid="6283419262313758339">"खोज सेटिङहरू"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"खोज सेटिङहरू"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index fed074d..d64ba7e 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -1155,9 +1155,9 @@
     <string name="storage_wizard_init_title" msgid="5085400514028585772">"Je <xliff:g id="NAME">^1</xliff:g> configureren"</string>
     <string name="storage_wizard_init_external_title" msgid="4867326438945303598">"Gebruiken als draagbare opslag"</string>
     <string name="storage_wizard_init_external_summary" msgid="7476105886344565074">"Voor het verplaatsen van foto\'s en andere media tussen apparaten."</string>
-    <string name="storage_wizard_init_internal_title" msgid="9100613534261408519">"Gebruiken als intern geheugen"</string>
+    <string name="storage_wizard_init_internal_title" msgid="9100613534261408519">"Gebruiken als interne opslag"</string>
     <string name="storage_wizard_init_internal_summary" msgid="6240417501036216410">"Voor het opslaan van dingen op alleen dit apparaat (waaronder apps en foto\'s). Hiervoor moet het apparaat worden geformatteerd, zodat het niet meer werkt met andere apparaten."</string>
-    <string name="storage_wizard_format_confirm_title" msgid="2814021794538252546">"Formatteren als intern geheugen"</string>
+    <string name="storage_wizard_format_confirm_title" msgid="2814021794538252546">"Formatteren als interne opslag"</string>
     <string name="storage_wizard_format_confirm_body" msgid="4401758710076806509">"De <xliff:g id="NAME_0">^1</xliff:g> moet worden geformatteerd om deze te beveiligen. \n\nNa het formatteren werkt deze <xliff:g id="NAME_1">^1</xliff:g> alleen in dit apparaat. \n\n"<b>"Wanneer je formatteert, worden alle gegevens gewist die momenteel op de <xliff:g id="NAME_2">^1</xliff:g> zijn opgeslagen."</b>" Als je wilt voorkomen dat je gegevens kwijtraakt, kun je eerst een back-up maken."</string>
     <string name="storage_wizard_format_confirm_public_title" msgid="4905690038882041566">"Formatteren als draagbare opslag"</string>
     <string name="storage_wizard_format_confirm_public_body" msgid="1516932692920060272">"Hiervoor moet de <xliff:g id="NAME_0">^1</xliff:g> worden geformatteerd. \n\n"<b>"Bij formatteren worden alle gegevens gewist die momenteel zijn opgeslagen op de <xliff:g id="NAME_1">^1</xliff:g>."</b>" Als je wilt voorkomen dat je gegevens kwijtraakt, kun je eerst een back-up maken."</string>
@@ -1165,7 +1165,7 @@
     <string name="storage_wizard_format_progress_title" msgid="6487352396450582292">"<xliff:g id="NAME">^1</xliff:g> formatteren…"</string>
     <string name="storage_wizard_format_progress_body" msgid="4445041233802828430">"Verwijder de <xliff:g id="NAME">^1</xliff:g> niet tijdens het formatteren."</string>
     <string name="storage_wizard_migrate_title" msgid="1363078147938160407">"Gegevens verpl. n. nieuwe opslag"</string>
-    <string name="storage_wizard_migrate_body" msgid="890751699549542345">"Je kunt je foto\'s, bestanden en bepaalde apps verplaatsen naar deze nieuwe <xliff:g id="NAME">^1</xliff:g>. \n\nHet overzetten duurt ongeveer <xliff:g id="TIME">^2</xliff:g> en maakt <xliff:g id="SIZE">^3</xliff:g> intern geheugen vrij. Tijdens het overzetten werken sommige apps niet."</string>
+    <string name="storage_wizard_migrate_body" msgid="890751699549542345">"Je kunt je foto\'s, bestanden en bepaalde apps verplaatsen naar deze nieuwe <xliff:g id="NAME">^1</xliff:g>. \n\nHet overzetten duurt ongeveer <xliff:g id="TIME">^2</xliff:g> en maakt <xliff:g id="SIZE">^3</xliff:g> interne opslag vrij. Tijdens het overzetten werken sommige apps niet."</string>
     <string name="storage_wizard_migrate_now" msgid="4523444323744239143">"Nu verplaatsen"</string>
     <string name="storage_wizard_migrate_later" msgid="3173482328116026253">"Later verplaatsen"</string>
     <string name="storage_wizard_migrate_confirm_title" msgid="8564833529613286965">"Gegevens nu verplaatsen"</string>
@@ -1494,7 +1494,7 @@
     <string name="not_installed" msgid="2797554494953450291">"Niet geïnstalleerd voor deze gebruiker"</string>
     <string name="no_applications" msgid="7336588977497084921">"Geen apps."</string>
     <string name="internal_storage" msgid="1584700623164275282">"Interne opslag"</string>
-    <string name="internal_storage_sentence" msgid="889098931914857143">"intern geheugen"</string>
+    <string name="internal_storage_sentence" msgid="889098931914857143">"interne opslag"</string>
     <string name="sd_card_storage" product="nosdcard" msgid="2673203150465132465">"USB-opslag"</string>
     <string name="sd_card_storage" product="default" msgid="7623513618171928235">"SD-kaartopslag"</string>
     <string name="recompute_size" msgid="7722567982831691718">"Grootte opnieuw berekenen..."</string>
@@ -2522,6 +2522,9 @@
       <item quantity="other">%d verborgen items weergeven</item>
       <item quantity="one">%d verborgen item weergeven</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Netwerk en internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Instellingen"</string>
     <string name="search_menu" msgid="6283419262313758339">"Zoekinstellingen"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Zoekinstellingen"</string>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index e7c71d3..fb69f16 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">%d ਲੁਕੀਆਂ ਹੋਈਆਂ ਆਈਟਮਾਂ ਵਿਖਾਓ</item>
       <item quantity="other">%d ਲੁਕੀਆਂ ਹੋਈਆਂ ਆਈਟਮਾਂ ਵਿਖਾਓ</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"ਸੈਟਿੰਗਾਂ"</string>
     <string name="search_menu" msgid="6283419262313758339">"ਖੋਜ ਸੈੱਟਿੰਗਜ਼"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"ਖੋਜ ਸੈਟਿੰਗਾਂ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 9c2bda6..d2df975 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -2566,6 +2566,9 @@
       <item quantity="other">Pokaż %d ukrytego elementu</item>
       <item quantity="one">Pokaż %d ukryty element</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Sieć i internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Ustawienia"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ustawienia wyszukiwania"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Ustawienia wyszukiwania"</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index c75ab4d..0cb1232 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">Mostrar %d item oculto</item>
       <item quantity="other">Mostrar %d itens ocultos</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Configurações"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configurações de pesquisa"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configurações de pesquisa"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index b4c96ef..c5826b4 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">Mostrar %d itens ocultos</item>
       <item quantity="one">Mostrar %d item oculto</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Definições"</string>
     <string name="search_menu" msgid="6283419262313758339">"Definições de pesquisa"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Definições de pesquisa"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index c75ab4d..0cb1232 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">Mostrar %d item oculto</item>
       <item quantity="other">Mostrar %d itens ocultos</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Configurações"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configurações de pesquisa"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Configurações de pesquisa"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index cde98cc..0e0e3e8 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -2544,6 +2544,9 @@
       <item quantity="other">Afișați %d de elemente ascunse</item>
       <item quantity="one">Afișați %d element ascuns</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Rețea și internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Setări"</string>
     <string name="search_menu" msgid="6283419262313758339">"Setări de căutare"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Setări pentru căutare"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 726a8cb..4db3539 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -2566,6 +2566,10 @@
       <item quantity="many">Показать %d скрытых объектов</item>
       <item quantity="other">Показать %d скрытых объекта</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Настройки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Поиск настроек"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Поиск настроек"</string>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 30d7a2e..3e6def6 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -1337,7 +1337,7 @@
     <string name="location_access_summary" msgid="69031404093194341">"ඔබගෙන් අවසර ඉල්ලූ යෙදුම්වලට ඔබගේ ස්ථාන තොරතුරු භාවිතයට ඉඩ දෙන්න"</string>
     <string name="location_sources_heading" msgid="1278732419851088319">"පිහිටීම් මූලාශ්‍ර"</string>
     <string name="about_settings" product="tablet" msgid="593457295516533765">"ටැබ්ලටය පිලිබඳ"</string>
-    <string name="about_settings" product="default" msgid="1743378368185371685">"දුරකථනය පිලිබඳ"</string>
+    <string name="about_settings" product="default" msgid="1743378368185371685">"දුරකථනය පිළිබඳ"</string>
     <string name="about_settings" product="emulator" msgid="221313099578564438">"උපාංගය ගැන"</string>
     <string name="about_settings_summary" msgid="3371517697156165959">"නීතිමය තොරතුරු, තත්වය, මෘදුකාංග අනුවාදය පෙන්වන්න"</string>
     <string name="legal_information" msgid="5769301644270604095">"නීතිමය තොරතුරු"</string>
@@ -2524,6 +2524,9 @@
       <item quantity="one">සඟවන ලද අයිතම %dක් පෙන්වන්න</item>
       <item quantity="other">සඟවන ලද අයිතම %dක් පෙන්වන්න</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"ජාලය සහ අන්තර්ජාලය"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"සැකසීම්"</string>
     <string name="search_menu" msgid="6283419262313758339">"සැකසීම් සොයන්න"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"සැකසීම් සොයන්න"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index b6fcb47..3ee888f 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -2566,6 +2566,10 @@
       <item quantity="other">Zobraziť %d skrytých položiek</item>
       <item quantity="one">Zobraziť %d skrytú položku</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Nastavenia"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavenia vyhľadávania"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Nastavenia vyhľadávania"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 228a488..43fddc8 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -2566,6 +2566,10 @@
       <item quantity="few">Pokaži %d skrite elemente</item>
       <item quantity="other">Pokaži %d skritih elementov</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Nastavitve"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavitve iskanja"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Nastavitve iskanja"</string>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index 616d476..bfb0248 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">Shfaq %d artikuj të fshehur</item>
       <item quantity="one">Shfaq %d artikull të fshehur</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Cilësimet"</string>
     <string name="search_menu" msgid="6283419262313758339">"Cilësimet e kërkimit"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Cilësimet e kërkimit"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 3a96d08..6719d16 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -378,8 +378,8 @@
     <string name="security_settings_fingerprint_enroll_touch_dialog_title" msgid="1863561601428695160">"Упс, то није сензор"</string>
     <string name="security_settings_fingerprint_enroll_touch_dialog_message" msgid="5053971232594165142">"Користите сензор за отисак прста на уређају."</string>
     <string name="security_settings_fingerprint_enroll_error_dialog_title" msgid="3618021988442639280">"Регистрација није завршена"</string>
-    <string name="security_settings_fingerprint_enroll_error_timeout_dialog_message" msgid="2942551158278899627">"Временско ограничење за регистрацију отиска прста је истекло. Покушајте поново."</string>
-    <string name="security_settings_fingerprint_enroll_error_generic_dialog_message" msgid="3624760637222239293">"Регистрација отиска прста није успела. Покушајте поново или користите други прст."</string>
+    <string name="security_settings_fingerprint_enroll_error_timeout_dialog_message" msgid="2942551158278899627">"Временско ограничење за регистрацију отиска прста је истекло. Пробајте поново."</string>
+    <string name="security_settings_fingerprint_enroll_error_generic_dialog_message" msgid="3624760637222239293">"Регистрација отиска прста није успела. Пробајте поново или користите други прст."</string>
     <string name="fingerprint_enroll_button_add" msgid="6317978977419045463">"Додајте још један"</string>
     <string name="fingerprint_enroll_button_next" msgid="6247009337616342759">"Даље"</string>
     <string name="security_settings_fingerprint_enroll_disclaimer" msgid="2624905914239271751">"Осим за откључавање телефона, отисак прста можете да користите и да бисте дали овлашћење за куповине и приступ апликацијама. "<annotation id="url">"Сазнајте више"</annotation></string>
@@ -504,7 +504,7 @@
     <string name="unlock_change_lock_pattern_title" msgid="2044092014872741130">"Промена шаблона за откључавање"</string>
     <string name="unlock_change_lock_pin_title" msgid="806629901095938484">"Промена PIN-а за откључавање"</string>
     <string name="unlock_change_lock_password_title" msgid="5606298470358768865">"Промена лозинке за откључавање"</string>
-    <string name="lock_profile_wipe_attempts" msgid="1216193652369039672">"Покушајте поново. <xliff:g id="CURRENT_ATTEMPTS">%1$d</xliff:g>. покушај од <xliff:g id="TOTAL_ATTEMPTS">%2$d</xliff:g>."</string>
+    <string name="lock_profile_wipe_attempts" msgid="1216193652369039672">"Пробајте поново. <xliff:g id="CURRENT_ATTEMPTS">%1$d</xliff:g>. покушај од <xliff:g id="TOTAL_ATTEMPTS">%2$d</xliff:g>."</string>
     <string name="lock_profile_wipe_warning_title" msgid="2961600792367265036">"Последњи покушај"</string>
     <string name="lock_profile_wipe_warning_content_pattern" msgid="8978031996247660921">"Ако у овом покушају унесете нетачан шаблон за Work, са овог уређаја ћемо уклонити профил за Work и повезане податке."</string>
     <string name="lock_profile_wipe_warning_content_pin" msgid="7697973618542377880">"Ако у овом покушају унесете нетачан PIN за Work, са овог уређаја ћемо уклонити профил за Work и повезане податке."</string>
@@ -723,11 +723,11 @@
     <string name="wifi_wps_complete" msgid="2388138550456729134">"WPS је успео. Повезивање на мрежу..."</string>
     <string name="wifi_wps_connected" msgid="7153432445748931183">"Успостављена је веза са Wi-Fi мрежом <xliff:g id="NETWORK_NAME">%s</xliff:g>"</string>
     <string name="wifi_wps_in_progress" msgid="3372311348221357944">"WPS је већ покренут и биће довршен за највише два минута"</string>
-    <string name="wifi_wps_failed_generic" msgid="5668775022238832527">"WPS није успео. Покушајте поново за неколико минута."</string>
+    <string name="wifi_wps_failed_generic" msgid="5668775022238832527">"WPS није успео. Пробајте поново за неколико минута."</string>
     <string name="wifi_wps_failed_wep" msgid="2702820087105284461">"Безбедносно подешавање бежичног рутера (WEP) није подржано"</string>
     <string name="wifi_wps_failed_tkip" msgid="4282401586860713349">"Безбедносно подешавање бежичног рутера (TKIP) није подржано"</string>
-    <string name="wifi_wps_failed_auth" msgid="1174614355181181958">"Потврда аутентичности није успела. Покушајте поново."</string>
-    <string name="wifi_wps_failed_overlap" msgid="5159533685596844778">"Откривена је друга WPS сесија. Покушајте поново за неколико минута."</string>
+    <string name="wifi_wps_failed_auth" msgid="1174614355181181958">"Потврда аутентичности није успела. Пробајте поново."</string>
+    <string name="wifi_wps_failed_overlap" msgid="5159533685596844778">"Откривена је друга WPS сесија. Пробајте поново за неколико минута."</string>
     <string name="wifi_ssid" msgid="5519636102673067319">"Име мреже"</string>
     <string name="wifi_ssid_hint" msgid="897593601067321355">"Унесите SSID"</string>
     <string name="wifi_security" msgid="6603611185592956936">"Безбедност"</string>
@@ -1101,8 +1101,8 @@
     <string name="dlg_confirm_unmount_text" product="default" msgid="6998379994779187692">"Ако извадите SD картицу, неке апликације које користите ће се зауставити и можда неће бити доступне све док поново не ставите SD картицу."</string>
     <string name="dlg_error_unmount_title" product="nosdcard" msgid="4642742385125426529"></string>
     <string name="dlg_error_unmount_title" product="default" msgid="4642742385125426529"></string>
-    <string name="dlg_error_unmount_text" product="nosdcard" msgid="9191518889746166147">"Није могуће искључити USB меморију. Покушајте поново касније."</string>
-    <string name="dlg_error_unmount_text" product="default" msgid="3500976899159848422">"Није могуће искључити SD картицу. Покушајте поново касније."</string>
+    <string name="dlg_error_unmount_text" product="nosdcard" msgid="9191518889746166147">"Није могуће искључити USB меморију. Пробајте поново касније."</string>
+    <string name="dlg_error_unmount_text" product="default" msgid="3500976899159848422">"Није могуће искључити SD картицу. Пробајте поново касније."</string>
     <string name="unmount_inform_text" product="nosdcard" msgid="7120241136790744265">"USB меморија ће бити искључена."</string>
     <string name="unmount_inform_text" product="default" msgid="1904212716075458402">"SD картица ће бити искључена."</string>
     <string name="sd_ejecting_title" msgid="8824572198034365468">"Ослобађање"</string>
@@ -1401,7 +1401,7 @@
     <string name="lockpattern_recording_intro_header" msgid="308287052221942814">"Нацртајте шаблон за откључавање"</string>
     <string name="lockpattern_recording_intro_footer" msgid="1118579101409152113">"Притисните „Мени“ да бисте добили помоћ."</string>
     <string name="lockpattern_recording_inprogress" msgid="6667844062721656773">"Подигните прст када завршите"</string>
-    <string name="lockpattern_recording_incorrect_too_short" msgid="1348234155120957561">"Повежите најмање <xliff:g id="NUMBER">%d</xliff:g> тачке. Покушајте поново."</string>
+    <string name="lockpattern_recording_incorrect_too_short" msgid="1348234155120957561">"Повежите најмање <xliff:g id="NUMBER">%d</xliff:g> тачке. Пробајте поново."</string>
     <string name="lockpattern_pattern_entered_header" msgid="4316818983675591604">"Шаблон је снимљен"</string>
     <string name="lockpattern_need_to_confirm" msgid="8054853451639221265">"Поново нацртајте шаблон да бисте потврдили"</string>
     <string name="lockpattern_pattern_confirmed_header" msgid="8455614172231880211">"Нови шаблон за откључавање"</string>
@@ -1420,7 +1420,7 @@
     <string name="lockpattern_settings_choose_lock_pattern" msgid="1652352830005653447">"Подешавање шаблона за откључавање"</string>
     <string name="lockpattern_settings_change_lock_pattern" msgid="1123908306116495545">"Промени шаблон за откључавање"</string>
     <string name="lockpattern_settings_help_how_to_record" msgid="2614673439060830433">"Како нацртати шаблон за откључавање"</string>
-    <string name="lockpattern_too_many_failed_confirmation_attempts" msgid="6909161623701848863">"Превише нетачних покушаја. Покушајте поново за <xliff:g id="NUMBER">%d</xliff:g> сек."</string>
+    <string name="lockpattern_too_many_failed_confirmation_attempts" msgid="6909161623701848863">"Превише нетачних покушаја. Пробајте поново за <xliff:g id="NUMBER">%d</xliff:g> сек."</string>
     <string name="activity_not_found" msgid="5551664692991605325">"Апликација није инсталирана на телефону."</string>
     <string name="lock_settings_profile_title" msgid="2121876391814535295">"Безбедност профила за Work"</string>
     <string name="lock_settings_profile_screen_lock_title" msgid="3334747927367115256">"Закључавање екрана за профил за Work"</string>
@@ -2313,7 +2313,7 @@
     <string name="vpn_lockdown_summary" msgid="2200032066376720339">"Изаберите VPN профил са којим ћете увек бити повезани. Мрежни садржај ће бити дозвољен само када сте повезани са овим VPN-ом."</string>
     <string name="vpn_lockdown_none" msgid="9214462857336483711">"Ниједан"</string>
     <string name="vpn_lockdown_config_error" msgid="3898576754914217248">"Стално укључени VPN захтева IP адресу за сервер и DNS."</string>
-    <string name="vpn_no_network" msgid="3050233675132726155">"Није успостављена мрежна веза. Покушајте поново касније."</string>
+    <string name="vpn_no_network" msgid="3050233675132726155">"Није успостављена мрежна веза. Пробајте поново касније."</string>
     <string name="vpn_missing_cert" msgid="7972907102570411501">"Недостаје сертификат. Измените профил."</string>
     <string name="trusted_credentials_system_tab" msgid="3984284264816924534">"Систем"</string>
     <string name="trusted_credentials_user_tab" msgid="2244732111398939475">"Корисник"</string>
@@ -2544,6 +2544,9 @@
       <item quantity="few">Прикажи %d скривене ставке</item>
       <item quantity="other">Прикажи %d скривених ставки</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и интернет"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Подешавања"</string>
     <string name="search_menu" msgid="6283419262313758339">"Претражите подешавања"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Подешавања претраге"</string>
@@ -2594,7 +2597,7 @@
     <string name="setup_wifi_nfc_tag" msgid="9028353016222911016">"Подесите Wi-Fi NFC ознаку"</string>
     <string name="write_tag" msgid="8571858602896222537">"Напиши"</string>
     <string name="status_awaiting_tap" msgid="2130145523773160617">"Додирните ознаку да бисте писали..."</string>
-    <string name="status_invalid_password" msgid="2575271864572897406">"Лозинка је неважећа. Покушајте поново."</string>
+    <string name="status_invalid_password" msgid="2575271864572897406">"Лозинка је неважећа. Пробајте поново."</string>
     <string name="status_write_success" msgid="5228419086308251169">"Успели сте!"</string>
     <string name="status_failed_to_write" msgid="8072752734686294718">"Није могуће писање података у NFC ознаку. Ако се проблем и даље јавља, покушајте са другом ознаком"</string>
     <string name="status_tag_not_writable" msgid="2511611539977682175">"NFC ознака не подржава писање. Користите другу ознаку."</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 5a726b1..ba7a09f 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">Visa %d dolda objekt</item>
       <item quantity="one">Visa %d dolt objekt</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Inställningar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Sökinställningar"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Sökinställningar"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 0d2ddc8..49c1192 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -2528,6 +2528,9 @@
       <item quantity="other">Onyesha vipengee %d vilivyofichwa</item>
       <item quantity="one">Onyesha kipengee %d kilichofichwa</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Mtandao na Intaneti"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Mipangilio"</string>
     <string name="search_menu" msgid="6283419262313758339">"Mipangilio ya utafutaji"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Mipangilio ya utafutaji"</string>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 26f3e39..2ce5f8e 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">மறைந்துள்ள %d உருப்படிகளைக் காட்டு</item>
       <item quantity="one">மறைந்துள்ள %d உருப்படியைக் காட்டு</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"அமைப்பு"</string>
     <string name="search_menu" msgid="6283419262313758339">"தேடல் அமைப்புகள்"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"தேடல் அமைப்பு"</string>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 66cbb9e..b3a66c2 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">%d దాచబడిన అంశాలను చూపుతుంది</item>
       <item quantity="one">%d దాచబడిన అంశాన్ని చూపుతుంది</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"నెట్‌వర్క్ &amp; ఇంటర్నెట్"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"సెట్టింగ్‌లు"</string>
     <string name="search_menu" msgid="6283419262313758339">"శోధన సెట్టింగ్‌లు"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"శోధన సెట్టింగ్‌లు"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index b15427e..48dc1e0 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">แสดงรายการที่ซ่อน %d รายการ</item>
       <item quantity="one">แสดงรายการที่ซ่อน %d รายการ</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"การตั้งค่า"</string>
     <string name="search_menu" msgid="6283419262313758339">"การตั้งค่าการค้นหา"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"การตั้งค่าการค้นหา"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index b5e1aa6..ef5bd80 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="one">Ipakita ang %d nakatagong item</item>
       <item quantity="other">Ipakita ang %d na nakatagong item</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Mga Setting"</string>
     <string name="search_menu" msgid="6283419262313758339">"Mga setting ng paghahanap"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Mga setting ng paghahanap"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 595fd29..466e807 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">Gizli %d öğeyi göster</item>
       <item quantity="one">Gizli %d öğeyi göster</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Ayarlar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Arama ayarları"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Arama ayarları"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 5718656..029e8f1 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -2566,6 +2566,9 @@
       <item quantity="many">Показати %d схованих елементів</item>
       <item quantity="other">Показати %d схованого елемента</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Мережа й Інтернет"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Налаштування"</string>
     <string name="search_menu" msgid="6283419262313758339">"Налаштування пошуку"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Налаштуваня пошуку"</string>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index 277eeb8..a1f8577 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -2510,6 +2510,10 @@
     <string name="dashboard_title" msgid="5453710313046681820">"ترتیبات"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for settings_suggestion_header_summary_hidden_items (5597356221942118048) -->
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"ترتیبات"</string>
     <string name="search_menu" msgid="6283419262313758339">"تلاش کی ترتیبات"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"تلاش کی ترتیبات"</string>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 395a726..f91c669 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -2522,6 +2522,9 @@
       <item quantity="other">%d ta yashirin elementni ko‘rsatish</item>
       <item quantity="one">%d ta yashirin elementni ko‘rsatish</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Tarmoq va internet"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Sozlamalar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Qidiruv sozlamalari"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Qidiruv sozlamalari"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 7aedfec..a80021a 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -2522,6 +2522,10 @@
       <item quantity="other">Hiển thị %d mục ẩn</item>
       <item quantity="one">Hiển thị %d mục ẩn</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Cài đặt"</string>
     <string name="search_menu" msgid="6283419262313758339">"Cài đặt tìm kiếm"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Cài đặt tìm kiếm"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index ce977ea..0659350 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -726,7 +726,7 @@
     <string name="wifi_status" msgid="4824568012414605414">"状态信息"</string>
     <string name="wifi_speed" msgid="3526198708812322037">"连接速度"</string>
     <string name="wifi_frequency" msgid="7791090119577812214">"频率"</string>
-    <string name="wifi_ip_address" msgid="1440054061044402918">"IP地址"</string>
+    <string name="wifi_ip_address" msgid="1440054061044402918">"IP 地址"</string>
     <string name="passpoint_label" msgid="6381371313076009926">"保存方式："</string>
     <string name="passpoint_content" msgid="8447207162397870483">"<xliff:g id="NAME">%1$s</xliff:g>凭据"</string>
     <string name="wifi_eap_method" msgid="8529436133640730382">"EAP方法"</string>
@@ -790,7 +790,7 @@
     <string name="wifi_advanced_titlebar" msgid="4485841401774142908">"高级WLAN"</string>
     <string name="wifi_configure_titlebar" msgid="7977475161589303074">"配置 WLAN"</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"MAC地址"</string>
-    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP地址"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP 地址"</string>
     <string name="wifi_saved_access_points_label" msgid="2013409399392285262">"已保存的网络"</string>
     <string name="wifi_advanced_settings_label" msgid="3654366894867838338">"IP 设置"</string>
     <string name="wifi_advanced_not_available" msgid="5823045095444154586">"此用户无法查看或修改 WLAN 网络高级设置"</string>
@@ -2522,6 +2522,10 @@
       <item quantity="other">显示 %d 项隐藏内容</item>
       <item quantity="one">显示 %d 项隐藏内容</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"设置"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜索设置"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"搜索设置"</string>
@@ -2805,7 +2809,7 @@
     <string name="encrypt_talkback_dialog_message_pattern" msgid="2020083142199612743">"当您绘制解锁图案以启动此设备时，<xliff:g id="SERVICE">%1$s</xliff:g>等无障碍服务还未开启。"</string>
     <string name="encrypt_talkback_dialog_message_password" msgid="4155875981789127796">"当您输入密码以启动此设备时，<xliff:g id="SERVICE">%1$s</xliff:g>等无障碍服务还未开启。"</string>
     <string name="direct_boot_unaware_dialog_message" msgid="7870273558547549125">"注意：重新启动后，您必须将手机解锁才能运行此应用"</string>
-    <string name="imei_information_title" msgid="8499085421609752290">"IMEI信息"</string>
+    <string name="imei_information_title" msgid="8499085421609752290">"IMEI 信息"</string>
     <string name="imei_information_summary" msgid="2074095606556565233">"IMEI相关信息"</string>
     <string name="slot_number" msgid="3762676044904653577">"（插槽<xliff:g id="SLOT_NUM">%1$d</xliff:g>）"</string>
     <string name="launch_by_default" msgid="1840761193189009248">"默认打开"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index c95af14..70ccbbf 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -2527,6 +2527,10 @@
       <item quantity="other">顯示 %d 個隱藏項目</item>
       <item quantity="one">顯示 %d 個隱藏項目</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜尋設定"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"搜尋設定"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index aa95a87..17c3237 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -2526,6 +2526,10 @@
       <item quantity="other">顯示 %d 個隱藏項目</item>
       <item quantity="one">顯示 %d 個隱藏項目</item>
     </plurals>
+    <!-- no translation found for network_dashboard_title (4771589228992391573) -->
+    <skip />
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜尋設定"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"搜尋設定"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 6e3dd1d..6f7ca7b 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -2523,6 +2523,9 @@
       <item quantity="one">Bonisa izinto ezingu-%d ezifihliwe</item>
       <item quantity="other">Bonisa izinto ezingu-%d ezifihliwe</item>
     </plurals>
+    <string name="network_dashboard_title" msgid="4771589228992391573">"Inethiwekhi ye-inthanethi"</string>
+    <!-- no translation found for connected_devices_dashboard_title (2355264951438890709) -->
+    <skip />
     <string name="search_results_title" msgid="1796252422574886932">"Izilungiselelo"</string>
     <string name="search_menu" msgid="6283419262313758339">"Izilungiselelo zokusesha"</string>
     <string name="query_hint_text" msgid="3350700807437473939">"Izilungiselelo zokusesha"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 64f61e2..8e6336f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5335,9 +5335,19 @@
     <!-- Button label to forget a VPN profile [CHAR LIMIT=40] -->
     <string name="vpn_forget_long">Forget VPN</string>
     <!-- Dialog message title to set another VPN app to be always-on [CHAR LIMIT=40] -->
-    <string name="vpn_replace_always_on_vpn_title">Replace existing VPN?</string>
+    <string name="vpn_replace_vpn_title">Replace existing VPN?</string>
+    <!-- Dialog message title to set always-on VPN when another app was not already set. -->
+    <string name="vpn_set_vpn_title">Set always-on VPN?</string>
+    <!-- Dialog message body to explain that always-on VPN will disable network traffic while the VPN is connecting. -->
+    <string name="vpn_first_always_on_vpn_message">By turning on this setting, you won\'t have an Internet connection until the VPN successfully connects</string>
+    <!-- Dialog message body to explain that always-on VPN will disable network traffic while the VPN is connecting, and that this will replace the current VPN. -->
+    <string name="vpn_replace_always_on_vpn_enable_message">Your existing VPN will be replaced, and you won\'t have an Internet connection until the VPN successfully connects</string>
+    <!-- Dialog message body to connect a VPN app, replacing another VPN app that is already always-on [CHAR LIMIT=NONE] -->
+    <string name="vpn_replace_always_on_vpn_disable_message">You\'re already connected to an always-on VPN. If you connect to a different one, your existing VPN will be replaced, and always-on mode will turn off.</string>
     <!-- Dialog message body to set another VPN app to be always-on [CHAR LIMIT=NONE] -->
-    <string name="vpn_replace_always_on_vpn_message">You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced.</string>
+    <string name="vpn_replace_vpn_message">You\'re already connected to a VPN. If you connect to a different one, your existing VPN will be replaced.</string>
+    <!-- Dialog action button to turn on a VPN. -->
+    <string name="vpn_turn_on">Turn on</string>
     <!-- Dialog mesage title when the user can't connect an always-on vpn [CHAR LIMIT=NONE] -->
     <string name="vpn_cant_connect_title"><xliff:g id="vpn_name" example="OpenVPN">%1$s</xliff:g> can\'t connect</string>
     <!-- Dialog message subtitle when the user can't connect an always-on vpn [CHAR LIMIT=NONE] -->
diff --git a/res/xml/network_and_internet.xml b/res/xml/network_and_internet.xml
index e990f9d..bce5dd9 100644
--- a/res/xml/network_and_internet.xml
+++ b/res/xml/network_and_internet.xml
@@ -54,4 +54,30 @@
         settings:userRestriction="no_config_vpn"
         settings:useAdminDisabledSummary="true"/>
 
+    <com.android.settingslib.RestrictedPreference
+        android:key="manage_mobile_plan"
+        android:title="@string/manage_mobile_plan_title"
+        android:persistent="false"
+        settings:userRestriction="no_config_mobile_networks"
+        settings:useAdminDisabledSummary="true"/>
+
+    <Preference
+        android:key="wifi_calling_settings"
+        android:title="@string/wifi_calling_settings_title"
+        android:fragment="com.android.settings.WifiCallingSettings"
+        settings:keywords="@string/keywords_wifi_calling"/>
+
+    <Preference
+        android:fragment="com.android.settings.ProxySelector"
+        android:key="proxy_settings"
+        android:title="@string/proxy_settings_title"/>
+
+    <!-- Network reset -->
+    <com.android.settingslib.RestrictedPreference
+        android:key="network_reset"
+        android:title="@string/reset_network_title"
+        settings:keywords="@string/keywords_network_reset"
+        android:fragment="com.android.settings.ResetNetwork"
+        settings:userRestriction="no_network_reset"
+        settings:useAdminDisabledSummary="true"/>
 </PreferenceScreen>
\ No newline at end of file
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 9349c13..06858b7 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -752,7 +752,9 @@
         }
 
         private void removeManagedProfileFingerprintsAndFinishIfNecessary(final int parentUserId) {
-            mFingerprintManager.setActiveUser(UserHandle.myUserId());
+            if (mFingerprintManager != null && mFingerprintManager.isHardwareDetected()) {
+                mFingerprintManager.setActiveUser(UserHandle.myUserId());
+            }
             final UserManager um = UserManager.get(getActivity());
             boolean hasChildProfile = false;
             if (!um.getUserInfo(parentUserId).isManagedProfile()) {
@@ -791,7 +793,12 @@
         }
 
         private int getResIdForFactoryResetProtectionWarningMessage() {
-            boolean hasFingerprints = mFingerprintManager.hasEnrolledFingerprints(mUserId);
+            final boolean hasFingerprints;
+            if (mFingerprintManager != null && mFingerprintManager.isHardwareDetected()) {
+                hasFingerprints = mFingerprintManager.hasEnrolledFingerprints(mUserId);
+            } else {
+                hasFingerprints = false;
+            }
             boolean isProfile = UserManager.get(getActivity()).isManagedProfile(mUserId);
             switch (mLockPatternUtils.getKeyguardStoredPasswordQuality(mUserId)) {
                 case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index e41502c..32aaaf0 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -1707,11 +1707,10 @@
     private void writeUsbConfigurationOption(Object newValue) {
         UsbManager manager = (UsbManager)getActivity().getSystemService(Context.USB_SERVICE);
         String function = newValue.toString();
-        manager.setCurrentFunction(function);
         if (function.equals("none")) {
-            manager.setUsbDataUnlocked(false);
+            manager.setCurrentFunction(function, false);
         } else {
-            manager.setUsbDataUnlocked(true);
+            manager.setCurrentFunction(function, true);
         }
     }
 
diff --git a/src/com/android/settings/WifiCallingSettings.java b/src/com/android/settings/WifiCallingSettings.java
index 5453b5e..e18f022 100644
--- a/src/com/android/settings/WifiCallingSettings.java
+++ b/src/com/android/settings/WifiCallingSettings.java
@@ -443,7 +443,7 @@
         return true;
     }
 
-    static int getWfcModeSummary(Context context, int wfcMode) {
+    public static int getWfcModeSummary(Context context, int wfcMode) {
         int resId = com.android.internal.R.string.wifi_calling_off_summary;
         if (ImsManager.isWfcEnabledByUser(context)) {
             switch (wfcMode) {
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 99e9ac5..cac964d 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -20,37 +20,30 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.admin.DevicePolicyManager;
-import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.content.res.Resources;
 import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.net.Uri;
-import android.nfc.NfcAdapter;
-import android.nfc.NfcManager;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.SearchIndexableResource;
 import android.provider.Settings;
-import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
 import android.telephony.TelephonyManager;
-import android.text.TextUtils;
 import android.util.Log;
 
-import com.android.ims.ImsManager;
 import com.android.internal.logging.MetricsProto.MetricsEvent;
-import com.android.internal.telephony.TelephonyIntents;
 import com.android.settings.network.AirplaneModePreferenceController;
 import com.android.settings.network.MobileNetworkPreferenceController;
+import com.android.settings.network.MobilePlanPreferenceController;
+import com.android.settings.network.NetworkResetPreferenceController;
+import com.android.settings.network.ProxyPreferenceController;
 import com.android.settings.network.TetherPreferenceController;
 import com.android.settings.network.VpnPreferenceController;
-import com.android.settings.nfc.NfcEnabler;
+import com.android.settings.network.WifiCallingPreferenceController;
+import com.android.settings.nfc.NfcPreferenceController;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
 import com.android.settingslib.RestrictedLockUtils;
@@ -61,33 +54,26 @@
 import java.util.Collections;
 import java.util.List;
 
-public class WirelessSettings extends SettingsPreferenceFragment implements Indexable {
+import static com.android.settings.network.MobilePlanPreferenceController
+        .MANAGE_MOBILE_PLAN_DIALOG_ID;
+
+public class WirelessSettings extends SettingsPreferenceFragment implements Indexable,
+        MobilePlanPreferenceController.MobilePlanPreferenceHost {
     private static final String TAG = "WirelessSettings";
 
-    private static final String KEY_TOGGLE_NFC = "toggle_nfc";
     private static final String KEY_WIMAX_SETTINGS = "wimax_settings";
-    private static final String KEY_ANDROID_BEAM_SETTINGS = "android_beam_settings";
 
-    private static final String KEY_PROXY_SETTINGS = "proxy_settings";
-
-    private static final String KEY_MANAGE_MOBILE_PLAN = "manage_mobile_plan";
-    private static final String KEY_WFC_SETTINGS = "wifi_calling_settings";
-    private static final String KEY_NETWORK_RESET = "network_reset";
-    private NfcEnabler mNfcEnabler;
-    private NfcAdapter mNfcAdapter;
-
-    private ConnectivityManager mCm;
-    private TelephonyManager mTm;
     private UserManager mUm;
 
-    private static final int MANAGE_MOBILE_PLAN_DIALOG_ID = 1;
-    private static final String SAVED_MANAGE_MOBILE_PLAN_MSG = "mManageMobilePlanMessage";
-
-    private PreferenceScreen mButtonWfc;
     private AirplaneModePreferenceController mAirplaneModePreferenceController;
     private TetherPreferenceController mTetherPreferenceController;
     private MobileNetworkPreferenceController mMobileNetworkPreferenceController;
     private VpnPreferenceController mVpnPreferenceController;
+    private NetworkResetPreferenceController mNetworkResetPreferenceController;
+    private WifiCallingPreferenceController mWifiCallingPreferenceController;
+    private ProxyPreferenceController mProxyPreferenceController;
+    private MobilePlanPreferenceController mMobilePlanPreferenceController;
+    private NfcPreferenceController mNfcPreferenceController;
 
     /**
      * Invoked on each preference click in this hierarchy, overrides
@@ -100,96 +86,31 @@
         if (mAirplaneModePreferenceController.handlePreferenceTreeClick(preference)) {
             return true;
         }
-        if (preference == findPreference(KEY_MANAGE_MOBILE_PLAN)) {
-            onManageMobilePlanClick();
+        if (mMobilePlanPreferenceController.handlePreferenceTreeClick(preference)) {
+            return true;
         }
         // Let the intents be launched by the Preference manager
         return super.onPreferenceTreeClick(preference);
     }
 
-    private String mManageMobilePlanMessage;
-    public void onManageMobilePlanClick() {
-        log("onManageMobilePlanClick:");
-        mManageMobilePlanMessage = null;
-        Resources resources = getActivity().getResources();
-
-        NetworkInfo ni = mCm.getActiveNetworkInfo();
-        if (mTm.hasIccCard() && (ni != null)) {
-            // Check for carrier apps that can handle provisioning first
-            Intent provisioningIntent = new Intent(TelephonyIntents.ACTION_CARRIER_SETUP);
-            List<String> carrierPackages =
-                    mTm.getCarrierPackageNamesForIntent(provisioningIntent);
-            if (carrierPackages != null && !carrierPackages.isEmpty()) {
-                if (carrierPackages.size() != 1) {
-                    Log.w(TAG, "Multiple matching carrier apps found, launching the first.");
-                }
-                provisioningIntent.setPackage(carrierPackages.get(0));
-                startActivity(provisioningIntent);
-                return;
-            }
-
-            // Get provisioning URL
-            String url = mCm.getMobileProvisioningUrl();
-            if (!TextUtils.isEmpty(url)) {
-                Intent intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN,
-                        Intent.CATEGORY_APP_BROWSER);
-                intent.setData(Uri.parse(url));
-                intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT |
-                        Intent.FLAG_ACTIVITY_NEW_TASK);
-                try {
-                    startActivity(intent);
-                } catch (ActivityNotFoundException e) {
-                    Log.w(TAG, "onManageMobilePlanClick: startActivity failed" + e);
-                }
-            } else {
-                // No provisioning URL
-                String operatorName = mTm.getSimOperatorName();
-                if (TextUtils.isEmpty(operatorName)) {
-                    // Use NetworkOperatorName as second choice in case there is no
-                    // SPN (Service Provider Name on the SIM). Such as with T-mobile.
-                    operatorName = mTm.getNetworkOperatorName();
-                    if (TextUtils.isEmpty(operatorName)) {
-                        mManageMobilePlanMessage = resources.getString(
-                                R.string.mobile_unknown_sim_operator);
-                    } else {
-                        mManageMobilePlanMessage = resources.getString(
-                                R.string.mobile_no_provisioning_url, operatorName);
-                    }
-                } else {
-                    mManageMobilePlanMessage = resources.getString(
-                            R.string.mobile_no_provisioning_url, operatorName);
-                }
-            }
-        } else if (mTm.hasIccCard() == false) {
-            // No sim card
-            mManageMobilePlanMessage = resources.getString(R.string.mobile_insert_sim_card);
-        } else {
-            // NetworkInfo is null, there is no connection
-            mManageMobilePlanMessage = resources.getString(R.string.mobile_connect_to_internet);
-        }
-        if (!TextUtils.isEmpty(mManageMobilePlanMessage)) {
-            log("onManageMobilePlanClick: message=" + mManageMobilePlanMessage);
-            showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID);
-        }
-    }
-
     @Override
     public Dialog onCreateDialog(int dialogId) {
         log("onCreateDialog: dialogId=" + dialogId);
         switch (dialogId) {
             case MANAGE_MOBILE_PLAN_DIALOG_ID:
                 return new AlertDialog.Builder(getActivity())
-                            .setMessage(mManageMobilePlanMessage)
-                            .setCancelable(false)
-                            .setPositiveButton(com.android.internal.R.string.ok,
-                                    new DialogInterface.OnClickListener() {
-                                @Override
-                                public void onClick(DialogInterface dialog, int id) {
-                                    log("MANAGE_MOBILE_PLAN_DIALOG.onClickListener id=" + id);
-                                    mManageMobilePlanMessage = null;
-                                }
-                            })
-                            .create();
+                        .setMessage(mMobilePlanPreferenceController.getMobilePlanDialogMessage())
+                        .setCancelable(false)
+                        .setPositiveButton(com.android.internal.R.string.ok,
+                                new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int id) {
+                                        log("MANAGE_MOBILE_PLAN_DIALOG.onClickListener id=" + id);
+                                        mMobilePlanPreferenceController
+                                                .setMobilePlanDialogMessage(null);
+                                    }
+                                })
+                        .create();
         }
         return super.onCreateDialog(dialogId);
     }
@@ -215,13 +136,6 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        if (savedInstanceState != null) {
-            mManageMobilePlanMessage = savedInstanceState.getString(SAVED_MANAGE_MOBILE_PLAN_MSG);
-        }
-        log("onCreate: mManageMobilePlanMessage=" + mManageMobilePlanMessage);
-
-        mCm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
-        mTm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
         mUm = (UserManager) getSystemService(Context.USER_SERVICE);
 
         addPreferencesFromResource(R.xml.wireless_settings);
@@ -235,19 +149,23 @@
         mTetherPreferenceController = new TetherPreferenceController(activity);
         mMobileNetworkPreferenceController = new MobileNetworkPreferenceController(activity);
         mVpnPreferenceController = new VpnPreferenceController(activity);
+        mWifiCallingPreferenceController = new WifiCallingPreferenceController(activity);
+        mNetworkResetPreferenceController = new NetworkResetPreferenceController(activity);
+        mProxyPreferenceController = new ProxyPreferenceController(activity);
+        mMobilePlanPreferenceController = new MobilePlanPreferenceController(activity, this);
+        mNfcPreferenceController = new NfcPreferenceController(activity);
+
+        mMobilePlanPreferenceController.onCreate(savedInstanceState);
 
         mAirplaneModePreferenceController.displayPreference(screen);
         mTetherPreferenceController.displayPreference(screen);
         mMobileNetworkPreferenceController.displayPreference(screen);
         mVpnPreferenceController.displayPreference(screen);
-
-        SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC);
-        RestrictedPreference androidBeam = (RestrictedPreference) findPreference(
-                KEY_ANDROID_BEAM_SETTINGS);
-
-        mNfcEnabler = new NfcEnabler(activity, nfc, androidBeam);
-
-        mButtonWfc = (PreferenceScreen) findPreference(KEY_WFC_SETTINGS);
+        mWifiCallingPreferenceController.displayPreference(screen);
+        mNetworkResetPreferenceController.displayPreference(screen);
+        mProxyPreferenceController.displayPreference(screen);
+        mMobilePlanPreferenceController.displayPreference(screen);
+        mNfcPreferenceController.displayPreference(screen);
 
         String toggleable = Settings.Global.getString(activity.getContentResolver(),
                 Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
@@ -261,60 +179,12 @@
             Preference ps = findPreference(KEY_WIMAX_SETTINGS);
             if (ps != null) root.removePreference(ps);
         } else {
-            if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_WIMAX )
+            if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_WIMAX)
                     && isWimaxEnabled) {
                 Preference ps = findPreference(KEY_WIMAX_SETTINGS);
                 ps.setDependency(AirplaneModePreferenceController.KEY_TOGGLE_AIRPLANE);
             }
         }
-
-        // Manually set dependencies for NFC when not toggleable.
-        if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_NFC)) {
-            findPreference(KEY_TOGGLE_NFC).setDependency(
-                    AirplaneModePreferenceController.KEY_TOGGLE_AIRPLANE);
-            findPreference(KEY_ANDROID_BEAM_SETTINGS).setDependency(
-                    AirplaneModePreferenceController.KEY_TOGGLE_AIRPLANE);
-        }
-
-        // Remove NFC if not available
-        mNfcAdapter = NfcAdapter.getDefaultAdapter(activity);
-        if (mNfcAdapter == null) {
-            getPreferenceScreen().removePreference(nfc);
-            getPreferenceScreen().removePreference(androidBeam);
-            mNfcEnabler = null;
-        }
-
-        // Remove Mobile Network Settings and Manage Mobile Plan for secondary users,
-        // if it's a wifi-only device.
-        if (!isAdmin || Utils.isWifiOnly(getActivity()) ||
-                RestrictedLockUtils.hasBaseUserRestriction(activity,
-                        UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, UserHandle.myUserId())) {
-            removePreference(KEY_MANAGE_MOBILE_PLAN);
-        }
-        // Remove Mobile Network Settings and Manage Mobile Plan
-        // if config_show_mobile_plan sets false.
-        final boolean isMobilePlanEnabled = this.getResources().getBoolean(
-                R.bool.config_show_mobile_plan);
-        if (!isMobilePlanEnabled) {
-            Preference pref = findPreference(KEY_MANAGE_MOBILE_PLAN);
-            if (pref != null) {
-                removePreference(KEY_MANAGE_MOBILE_PLAN);
-            }
-        }
-
-        // Enable Proxy selector settings if allowed.
-        Preference mGlobalProxy = findPreference(KEY_PROXY_SETTINGS);
-        final DevicePolicyManager mDPM = (DevicePolicyManager)
-                activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
-        // proxy UI disabled until we have better app support
-        getPreferenceScreen().removePreference(mGlobalProxy);
-        mGlobalProxy.setEnabled(mDPM.getGlobalProxyAdmin() == null);
-
-        // Remove network reset if not allowed
-        if (RestrictedLockUtils.hasBaseUserRestriction(activity,
-                UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) {
-            removePreference(KEY_NETWORK_RESET);
-        }
     }
 
     @Override
@@ -322,39 +192,20 @@
         super.onResume();
 
         mAirplaneModePreferenceController.onResume();
-        if (mNfcEnabler != null) {
-            mNfcEnabler.resume();
-        }
-
-        // update WFC setting
-        final Context context = getActivity();
-        if (ImsManager.isWfcEnabledByPlatform(context) &&
-                ImsManager.isWfcProvisionedOnDevice(context)) {
-            getPreferenceScreen().addPreference(mButtonWfc);
-
-            mButtonWfc.setSummary(WifiCallingSettings.getWfcModeSummary(
-                    context, ImsManager.getWfcMode(context, mTm.isNetworkRoaming())));
-        } else {
-            removePreference(KEY_WFC_SETTINGS);
-        }
+        mNfcPreferenceController.onResume();
     }
 
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
-
-        if (!TextUtils.isEmpty(mManageMobilePlanMessage)) {
-            outState.putString(SAVED_MANAGE_MOBILE_PLAN_MSG, mManageMobilePlanMessage);
-        }
+        mMobilePlanPreferenceController.onSaveInstanceState(outState);
     }
 
     @Override
     public void onPause() {
         super.onPause();
         mAirplaneModePreferenceController.onPause();
-        if (mNfcEnabler != null) {
-            mNfcEnabler.pause();
-        }
+        mNfcPreferenceController.onPause();
     }
 
     @Override
@@ -364,6 +215,11 @@
     }
 
     @Override
+    public void showMobilePlanMessageDialog() {
+        showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID);
+    }
+
+    @Override
     protected int getHelpResource() {
         return R.string.help_url_more_networks;
     }
@@ -372,79 +228,51 @@
      * For Search.
      */
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-        new BaseSearchIndexProvider() {
-            @Override
-            public List<SearchIndexableResource> getXmlResourcesToIndex(
-                    Context context, boolean enabled) {
-                // Remove wireless settings from search in demo mode
-                if (UserManager.isDeviceInDemoMode(context)) {
-                    return Collections.emptyList();
-                }
-                SearchIndexableResource sir = new SearchIndexableResource(context);
-                sir.xmlResId = R.xml.wireless_settings;
-                return Arrays.asList(sir);
-            }
-
-            @Override
-            public List<String> getNonIndexableKeys(Context context) {
-                final ArrayList<String> result = new ArrayList<String>();
-
-                final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
-                final boolean isSecondaryUser = !um.isAdminUser();
-                final boolean isWimaxEnabled = !isSecondaryUser
-                        && context.getResources().getBoolean(
-                        com.android.internal.R.bool.config_wimaxEnabled);
-                if (!isWimaxEnabled) {
-                    result.add(KEY_WIMAX_SETTINGS);
-                }
-
-                new VpnPreferenceController(context).updateNonIndexableKeys(result);
-
-                // Remove NFC if not available
-                final NfcManager manager = (NfcManager)
-                        context.getSystemService(Context.NFC_SERVICE);
-                if (manager != null) {
-                    NfcAdapter adapter = manager.getDefaultAdapter();
-                    if (adapter == null) {
-                        result.add(KEY_TOGGLE_NFC);
-                        result.add(KEY_ANDROID_BEAM_SETTINGS);
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    // Remove wireless settings from search in demo mode
+                    if (UserManager.isDeviceInDemoMode(context)) {
+                        return Collections.emptyList();
                     }
+                    SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.wireless_settings;
+                    return Arrays.asList(sir);
                 }
 
-                // Remove Mobile Network Settings and Manage Mobile Plan if it's a wifi-only device.
-                if (isSecondaryUser || Utils.isWifiOnly(context)) {
-                    result.add(KEY_MANAGE_MOBILE_PLAN);
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    final ArrayList<String> result = new ArrayList<String>();
+
+                    final UserManager um = (UserManager) context.getSystemService(
+                            Context.USER_SERVICE);
+                    final boolean isSecondaryUser = !um.isAdminUser();
+                    final boolean isWimaxEnabled = !isSecondaryUser
+                            && context.getResources().getBoolean(
+                            com.android.internal.R.bool.config_wimaxEnabled);
+                    if (!isWimaxEnabled) {
+                        result.add(KEY_WIMAX_SETTINGS);
+                    }
+
+                    new VpnPreferenceController(context).updateNonIndexableKeys(result);
+
+                    new NfcPreferenceController(context).updateNonIndexableKeys(result);
+                    new MobilePlanPreferenceController(context, null /* MobilePlanClickHandler */)
+                            .updateNonIndexableKeys(result);
+                    new MobileNetworkPreferenceController(context).updateNonIndexableKeys(result);
+
+                    // Remove Airplane Mode settings if it's a stationary device such as a TV.
+                    new AirplaneModePreferenceController(context, null /* fragment */)
+                            .updateNonIndexableKeys(result);
+
+                    new ProxyPreferenceController(context).updateNonIndexableKeys(result);
+
+                    new TetherPreferenceController(context).updateNonIndexableKeys(result);
+                    new WifiCallingPreferenceController(context).updateNonIndexableKeys(result);
+                    new NetworkResetPreferenceController(context).updateNonIndexableKeys(result);
+
+                    return result;
                 }
-                new MobileNetworkPreferenceController(context).updateNonIndexableKeys(result);
-
-                // Remove Mobile Network Settings and Manage Mobile Plan
-                // if config_show_mobile_plan sets false.
-                final boolean isMobilePlanEnabled = context.getResources().getBoolean(
-                        R.bool.config_show_mobile_plan);
-                if (!isMobilePlanEnabled) {
-                    result.add(KEY_MANAGE_MOBILE_PLAN);
-                }
-                // Remove Airplane Mode settings if it's a stationary device such as a TV.
-                new AirplaneModePreferenceController(context, null /* fragment */)
-                        .updateNonIndexableKeys(result);
-
-                // proxy UI disabled until we have better app support
-                result.add(KEY_PROXY_SETTINGS);
-
-                new TetherPreferenceController(context)
-                        .updateNonIndexableKeys(result);
-
-                if (!ImsManager.isWfcEnabledByPlatform(context) ||
-                        !ImsManager.isWfcProvisionedOnDevice(context)) {
-                    result.add(KEY_WFC_SETTINGS);
-                }
-
-                if (RestrictedLockUtils.hasBaseUserRestriction(context,
-                        UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) {
-                    result.add(KEY_NETWORK_RESET);
-                }
-
-                return result;
-            }
-        };
+            };
 }
diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
index 771f9ba..b913669 100644
--- a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
@@ -20,8 +20,10 @@
 import com.android.settings.R;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.nfc.NfcPreferenceController;
 import com.android.settingslib.drawer.CategoryKey;
 
+import java.util.ArrayList;
 import java.util.List;
 
 public class ConnectedDeviceDashboardFragment extends DashboardFragment {
@@ -50,7 +52,12 @@
 
     @Override
     protected List<PreferenceController> getPreferenceControllers(Context context) {
-        return null;
+        final NfcPreferenceController nfcPreferenceController =
+                new NfcPreferenceController(context);
+        getLifecycle().addObserver(nfcPreferenceController);
+        final List<PreferenceController> controllers = new ArrayList<>();
+        controllers.add(nfcPreferenceController);
+        return controllers;
     }
 
 }
\ No newline at end of file
diff --git a/src/com/android/settings/core/instrumentation/SharedPreferencesLogger.java b/src/com/android/settings/core/instrumentation/SharedPreferencesLogger.java
index 101f1b5..65b33df 100644
--- a/src/com/android/settings/core/instrumentation/SharedPreferencesLogger.java
+++ b/src/com/android/settings/core/instrumentation/SharedPreferencesLogger.java
@@ -21,13 +21,13 @@
 import android.content.pm.PackageManager;
 import android.os.AsyncTask;
 import android.text.TextUtils;
-import android.util.ArraySet;
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.overlay.FeatureFactory;
 
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentSkipListSet;
 
 public class SharedPreferencesLogger implements SharedPreferences {
 
@@ -40,7 +40,7 @@
         mContext = context;
         mTag = tag;
         mMetricsFeature = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
-        mPreferenceKeySet = new ArraySet<>();
+        mPreferenceKeySet = new ConcurrentSkipListSet<>();
     }
 
     @Override
@@ -99,8 +99,12 @@
     }
 
     private void logValue(String key, String value) {
+        logValue(key, value, false /* forceLog */);
+    }
+
+    private void logValue(String key, String value, boolean forceLog) {
         final String prefKey = mTag + "/" + key;
-        if (!mPreferenceKeySet.contains(prefKey)) {
+        if (!forceLog && !mPreferenceKeySet.contains(prefKey)) {
             // Pref key doesn't exist in set, this is initial display so we skip metrics but
             // keeps track of this key.
             mPreferenceKeySet.add(prefKey);
@@ -138,8 +142,9 @@
                 pm.getPackageInfo(value, PackageManager.MATCH_UNINSTALLED_PACKAGES);
                 logPackageName(key, value);
             } catch (PackageManager.NameNotFoundException e) {
-                // Clearly not a package, lets log it.
-                logValue(key, value);
+                // Clearly not a package, and it's unlikely this preference is in prefSet, so
+                // lets force log it.
+                logValue(key, value, true /* forceLog */);
             }
             return null;
         }
diff --git a/src/com/android/settings/core/lifecycle/Lifecycle.java b/src/com/android/settings/core/lifecycle/Lifecycle.java
index c1d6457..c47f97e 100644
--- a/src/com/android/settings/core/lifecycle/Lifecycle.java
+++ b/src/com/android/settings/core/lifecycle/Lifecycle.java
@@ -17,11 +17,14 @@
 
 import android.annotation.UiThread;
 import android.content.Context;
+import android.os.Bundle;
 
 import com.android.settings.core.lifecycle.events.OnAttach;
+import com.android.settings.core.lifecycle.events.OnCreate;
 import com.android.settings.core.lifecycle.events.OnDestroy;
 import com.android.settings.core.lifecycle.events.OnPause;
 import com.android.settings.core.lifecycle.events.OnResume;
+import com.android.settings.core.lifecycle.events.OnSaveInstanceState;
 import com.android.settings.core.lifecycle.events.OnStart;
 import com.android.settings.core.lifecycle.events.OnStop;
 import com.android.settings.utils.ThreadUtils;
@@ -54,6 +57,14 @@
         }
     }
 
+    public void onCreate(Bundle savedInstanceState) {
+        for (LifecycleObserver observer : mObservers) {
+            if (observer instanceof OnCreate) {
+                ((OnCreate) observer).onCreate(savedInstanceState);
+            }
+        }
+    }
+
     public void onStart() {
         for (LifecycleObserver observer : mObservers) {
             if (observer instanceof OnStart) {
@@ -78,6 +89,14 @@
         }
     }
 
+    public void onSaveInstanceState(Bundle outState) {
+        for (LifecycleObserver observer : mObservers) {
+            if (observer instanceof OnSaveInstanceState) {
+                ((OnSaveInstanceState) observer).onSaveInstanceState(outState);
+            }
+        }
+    }
+
     public void onStop() {
         for (LifecycleObserver observer : mObservers) {
             if (observer instanceof OnStop) {
diff --git a/src/com/android/settings/core/lifecycle/ObservablePreferenceFragment.java b/src/com/android/settings/core/lifecycle/ObservablePreferenceFragment.java
index dff1d8f..e9822af 100644
--- a/src/com/android/settings/core/lifecycle/ObservablePreferenceFragment.java
+++ b/src/com/android/settings/core/lifecycle/ObservablePreferenceFragment.java
@@ -18,6 +18,7 @@
 
 import android.annotation.CallSuper;
 import android.content.Context;
+import android.os.Bundle;
 import android.support.v14.preference.PreferenceFragment;
 
 /**
@@ -40,6 +41,20 @@
 
     @CallSuper
     @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mLifecycle.onCreate(savedInstanceState);
+    }
+
+    @CallSuper
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        mLifecycle.onSaveInstanceState(outState);
+    }
+
+    @CallSuper
+    @Override
     public void onStart() {
         mLifecycle.onStart();
         super.onStart();
diff --git a/src/com/android/settings/core/lifecycle/events/OnCreate.java b/src/com/android/settings/core/lifecycle/events/OnCreate.java
new file mode 100644
index 0000000..9c97cf5
--- /dev/null
+++ b/src/com/android/settings/core/lifecycle/events/OnCreate.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.core.lifecycle.events;
+
+
+import android.os.Bundle;
+
+public interface OnCreate {
+    void onCreate(Bundle savedInstanceState);
+}
diff --git a/src/com/android/settings/core/lifecycle/events/OnSaveInstanceState.java b/src/com/android/settings/core/lifecycle/events/OnSaveInstanceState.java
new file mode 100644
index 0000000..fab4041
--- /dev/null
+++ b/src/com/android/settings/core/lifecycle/events/OnSaveInstanceState.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.core.lifecycle.events;
+
+import android.os.Bundle;
+
+
+public interface OnSaveInstanceState {
+    void onSaveInstanceState(Bundle outState);
+}
diff --git a/src/com/android/settings/deviceinfo/UsbBackend.java b/src/com/android/settings/deviceinfo/UsbBackend.java
index cd88709..e648b39 100644
--- a/src/com/android/settings/deviceinfo/UsbBackend.java
+++ b/src/com/android/settings/deviceinfo/UsbBackend.java
@@ -101,20 +101,16 @@
     private void setUsbFunction(int mode) {
         switch (mode) {
             case MODE_DATA_MTP:
-                mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MTP);
-                mUsbManager.setUsbDataUnlocked(true);
+                mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MTP, true);
                 break;
             case MODE_DATA_PTP:
-                mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_PTP);
-                mUsbManager.setUsbDataUnlocked(true);
+                mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_PTP, true);
                 break;
             case MODE_DATA_MIDI:
-                mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MIDI);
-                mUsbManager.setUsbDataUnlocked(true);
+                mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MIDI, true);
                 break;
             default:
-                mUsbManager.setCurrentFunction(null);
-                mUsbManager.setUsbDataUnlocked(false);
+                mUsbManager.setCurrentFunction(null, false);
                 break;
         }
     }
diff --git a/src/com/android/settings/network/MobileNetworkPreferenceController.java b/src/com/android/settings/network/MobileNetworkPreferenceController.java
index 3905ca6..509c771 100644
--- a/src/com/android/settings/network/MobileNetworkPreferenceController.java
+++ b/src/com/android/settings/network/MobileNetworkPreferenceController.java
@@ -46,9 +46,9 @@
 
     @Override
     protected boolean isAvailable() {
-        return mIsSecondaryUser
-                || Utils.isWifiOnly(mContext)
-                || hasBaseUserRestriction(mContext, DISALLOW_CONFIG_MOBILE_NETWORKS, myUserId());
+        return !mIsSecondaryUser
+                && !Utils.isWifiOnly(mContext)
+                && !hasBaseUserRestriction(mContext, DISALLOW_CONFIG_MOBILE_NETWORKS, myUserId());
     }
 
     @Override
diff --git a/src/com/android/settings/network/MobilePlanPreferenceController.java b/src/com/android/settings/network/MobilePlanPreferenceController.java
new file mode 100644
index 0000000..e62686f
--- /dev/null
+++ b/src/com/android/settings/network/MobilePlanPreferenceController.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.network;
+
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.internal.telephony.TelephonyIntents;
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnCreate;
+import com.android.settings.core.lifecycle.events.OnSaveInstanceState;
+
+import java.util.List;
+
+import static android.content.Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT;
+import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
+import static android.os.UserHandle.myUserId;
+import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
+import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction;
+
+
+public class MobilePlanPreferenceController extends PreferenceController implements
+        LifecycleObserver, OnCreate, OnSaveInstanceState {
+
+    public interface MobilePlanPreferenceHost {
+        void showMobilePlanMessageDialog();
+    }
+
+    public static final int MANAGE_MOBILE_PLAN_DIALOG_ID = 1;
+
+    private static final String TAG = "MobilePlanPrefContr";
+    private static final String KEY_MANAGE_MOBILE_PLAN = "manage_mobile_plan";
+    private static final String SAVED_MANAGE_MOBILE_PLAN_MSG = "mManageMobilePlanMessage";
+
+    private final UserManager mUserManager;
+    private final boolean mIsSecondaryUser;
+    private final MobilePlanPreferenceHost mHost;
+
+    private ConnectivityManager mCm;
+    private TelephonyManager mTm;
+
+    private String mMobilePlanDialogMessage;
+
+    public MobilePlanPreferenceController(Context context,
+            MobilePlanPreferenceHost host) {
+        super(context);
+        mHost = host;
+        mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        mTm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+        mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
+        mIsSecondaryUser = !mUserManager.isAdminUser();
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (mHost != null && KEY_MANAGE_MOBILE_PLAN.equals(preference.getKey())) {
+            mMobilePlanDialogMessage = null;
+            onManageMobilePlanClick();
+        }
+        return false;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        if (savedInstanceState != null) {
+            mMobilePlanDialogMessage = savedInstanceState.getString(SAVED_MANAGE_MOBILE_PLAN_MSG);
+        }
+        Log.d(TAG, "onCreate: mMobilePlanDialogMessage=" + mMobilePlanDialogMessage);
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        if (!TextUtils.isEmpty(mMobilePlanDialogMessage)) {
+            outState.putString(SAVED_MANAGE_MOBILE_PLAN_MSG, mMobilePlanDialogMessage);
+        }
+    }
+
+    public String getMobilePlanDialogMessage() {
+        return mMobilePlanDialogMessage;
+    }
+
+    public void setMobilePlanDialogMessage(String messasge) {
+        mMobilePlanDialogMessage = messasge;
+    }
+
+    @Override
+    protected boolean isAvailable() {
+        final boolean isPrefAllowedOnDevice = mContext.getResources().getBoolean(
+                com.android.settings.R.bool.config_show_mobile_plan);
+        final boolean isPrefAllowedForUser = !mIsSecondaryUser
+                && !Utils.isWifiOnly(mContext)
+                && !hasBaseUserRestriction(mContext, DISALLOW_CONFIG_MOBILE_NETWORKS, myUserId());
+        return isPrefAllowedForUser && isPrefAllowedOnDevice;
+    }
+    @Override
+    protected String getPreferenceKey() {
+        return KEY_MANAGE_MOBILE_PLAN;
+    }
+
+    private void onManageMobilePlanClick() {
+        Resources resources = mContext.getResources();
+        NetworkInfo ni = mCm.getActiveNetworkInfo();
+        if (mTm.hasIccCard() && (ni != null)) {
+            // Check for carrier apps that can handle provisioning first
+            Intent provisioningIntent = new Intent(TelephonyIntents.ACTION_CARRIER_SETUP);
+            List<String> carrierPackages =
+                    mTm.getCarrierPackageNamesForIntent(provisioningIntent);
+            if (carrierPackages != null && !carrierPackages.isEmpty()) {
+                if (carrierPackages.size() != 1) {
+                    Log.w(TAG, "Multiple matching carrier apps found, launching the first.");
+                }
+                provisioningIntent.setPackage(carrierPackages.get(0));
+                mContext.startActivity(provisioningIntent);
+                return;
+            }
+
+            // Get provisioning URL
+            String url = mCm.getMobileProvisioningUrl();
+            if (!TextUtils.isEmpty(url)) {
+                Intent intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN,
+                        Intent.CATEGORY_APP_BROWSER);
+                intent.setData(Uri.parse(url));
+                intent.setFlags(FLAG_ACTIVITY_BROUGHT_TO_FRONT | FLAG_ACTIVITY_NEW_TASK);
+                try {
+                    mContext.startActivity(intent);
+                } catch (ActivityNotFoundException e) {
+                    Log.w(TAG, "onManageMobilePlanClick: startActivity failed" + e);
+                }
+            } else {
+                // No provisioning URL
+                String operatorName = mTm.getSimOperatorName();
+                if (TextUtils.isEmpty(operatorName)) {
+                    // Use NetworkOperatorName as second choice in case there is no
+                    // SPN (Service Provider Name on the SIM). Such as with T-mobile.
+                    operatorName = mTm.getNetworkOperatorName();
+                    if (TextUtils.isEmpty(operatorName)) {
+                        mMobilePlanDialogMessage =
+                                resources.getString(R.string.mobile_unknown_sim_operator);
+                    } else {
+                        mMobilePlanDialogMessage = resources.getString(
+                                R.string.mobile_no_provisioning_url, operatorName);
+                    }
+                } else {
+                    mMobilePlanDialogMessage =
+                            resources.getString(R.string.mobile_no_provisioning_url, operatorName);
+                }
+            }
+        } else if (mTm.hasIccCard() == false) {
+            // No sim card
+            mMobilePlanDialogMessage = resources.getString(R.string.mobile_insert_sim_card);
+        } else {
+            // NetworkInfo is null, there is no connection
+            mMobilePlanDialogMessage = resources.getString(R.string.mobile_connect_to_internet);
+        }
+        if (!TextUtils.isEmpty(mMobilePlanDialogMessage)) {
+            Log.d(TAG, "onManageMobilePlanClick: message=" + mMobilePlanDialogMessage);
+            if (mHost != null) {
+                mHost.showMobilePlanMessageDialog();
+            } else {
+                Log.d(TAG, "Missing host fragment, cannot show message dialog.");
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java
index 88099c6..fca8ec7 100644
--- a/src/com/android/settings/network/NetworkDashboardFragment.java
+++ b/src/com/android/settings/network/NetworkDashboardFragment.java
@@ -15,8 +15,12 @@
  */
 package com.android.settings.network;
 
+import android.app.AlertDialog;
+import android.app.Dialog;
 import android.content.Context;
+import android.util.Log;
 
+import com.android.internal.logging.MetricsProto;
 import com.android.settings.R;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
@@ -25,7 +29,11 @@
 import java.util.ArrayList;
 import java.util.List;
 
-public class NetworkDashboardFragment extends DashboardFragment {
+import static com.android.settings.network.MobilePlanPreferenceController
+        .MANAGE_MOBILE_PLAN_DIALOG_ID;
+
+public class NetworkDashboardFragment extends DashboardFragment implements
+        MobilePlanPreferenceController.MobilePlanPreferenceHost {
 
     private static final String TAG = "NetworkDashboardFrag";
 
@@ -53,13 +61,50 @@
     protected List<PreferenceController> getPreferenceControllers(Context context) {
         final AirplaneModePreferenceController airplaneModePreferenceController =
                 new AirplaneModePreferenceController(context, this /* fragment */);
+        final MobilePlanPreferenceController mobilePlanPreferenceController =
+                new MobilePlanPreferenceController(context, this);
         getLifecycle().addObserver(airplaneModePreferenceController);
+        getLifecycle().addObserver(mobilePlanPreferenceController);
 
         final List<PreferenceController> controllers = new ArrayList<>();
         controllers.add(airplaneModePreferenceController);
-        controllers.add(new TetherPreferenceController(context));
         controllers.add(new MobileNetworkPreferenceController(context));
+        controllers.add(new TetherPreferenceController(context));
         controllers.add(new VpnPreferenceController(context));
+        controllers.add(new WifiCallingPreferenceController(context));
+        controllers.add(new NetworkResetPreferenceController(context));
+        controllers.add(new ProxyPreferenceController(context));
+        controllers.add(mobilePlanPreferenceController);
         return controllers;
     }
+
+    @Override
+    public void showMobilePlanMessageDialog() {
+        showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID);
+    }
+
+    @Override
+    public Dialog onCreateDialog(int dialogId) {
+        Log.d(TAG, "onCreateDialog: dialogId=" + dialogId);
+        switch (dialogId) {
+            case MANAGE_MOBILE_PLAN_DIALOG_ID:
+                final MobilePlanPreferenceController controller =
+                        getPreferenceController(MobilePlanPreferenceController.class);
+                return new AlertDialog.Builder(getActivity())
+                        .setMessage(controller.getMobilePlanDialogMessage())
+                        .setCancelable(false)
+                        .setPositiveButton(com.android.internal.R.string.ok,
+                                (dialog, id) -> controller.setMobilePlanDialogMessage(null))
+                        .create();
+        }
+        return super.onCreateDialog(dialogId);
+    }
+
+    @Override
+    public int getDialogMetricsCategory(int dialogId) {
+        if (MANAGE_MOBILE_PLAN_DIALOG_ID == dialogId) {
+            return MetricsProto.MetricsEvent.DIALOG_MANAGE_MOBILE_PLAN;
+        }
+        return 0;
+    }
 }
diff --git a/src/com/android/settings/network/NetworkResetPreferenceController.java b/src/com/android/settings/network/NetworkResetPreferenceController.java
new file mode 100644
index 0000000..2fe2038
--- /dev/null
+++ b/src/com/android/settings/network/NetworkResetPreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.network;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.core.PreferenceController;
+import com.android.settingslib.RestrictedLockUtils;
+
+public class NetworkResetPreferenceController extends PreferenceController {
+
+    private static final String KEY_NETWORK_RESET = "network_reset";
+
+    public NetworkResetPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    protected boolean isAvailable() {
+        return !RestrictedLockUtils.hasBaseUserRestriction(mContext,
+                UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId());
+    }
+
+    @Override
+    protected String getPreferenceKey() {
+        return KEY_NETWORK_RESET;
+    }
+}
diff --git a/src/com/android/settings/network/ProxyPreferenceController.java b/src/com/android/settings/network/ProxyPreferenceController.java
new file mode 100644
index 0000000..075b1f0
--- /dev/null
+++ b/src/com/android/settings/network/ProxyPreferenceController.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.network;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.core.PreferenceController;
+
+public class ProxyPreferenceController extends PreferenceController {
+
+    private static final String KEY_PROXY_SETTINGS = "proxy_settings";
+
+    public ProxyPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    protected boolean isAvailable() {
+        // proxy UI disabled until we have better app support
+        return false;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        // Enable Proxy selector settings if allowed.
+        final Preference pref = screen.findPreference(KEY_PROXY_SETTINGS);
+        if (pref != null) {
+            final DevicePolicyManager dpm = (DevicePolicyManager)
+                    mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
+            pref.setEnabled(dpm.getGlobalProxyAdmin() == null);
+        }
+    }
+
+    @Override
+    protected String getPreferenceKey() {
+        return KEY_PROXY_SETTINGS;
+    }
+}
diff --git a/src/com/android/settings/network/WifiCallingPreferenceController.java b/src/com/android/settings/network/WifiCallingPreferenceController.java
new file mode 100644
index 0000000..e733b67
--- /dev/null
+++ b/src/com/android/settings/network/WifiCallingPreferenceController.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.network;
+
+import android.content.Context;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.telephony.TelephonyManager;
+
+import com.android.ims.ImsManager;
+import com.android.settings.WifiCallingSettings;
+import com.android.settings.core.PreferenceController;
+
+public class WifiCallingPreferenceController extends PreferenceController {
+
+    private static final String KEY_WFC_SETTINGS = "wifi_calling_settings";
+    private TelephonyManager mTm;
+
+    public WifiCallingPreferenceController(Context context) {
+        super(context);
+        mTm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        final Preference pref = screen.findPreference(KEY_WFC_SETTINGS);
+        if (pref != null) {
+            pref.setSummary(WifiCallingSettings.getWfcModeSummary(
+                    mContext, ImsManager.getWfcMode(mContext, mTm.isNetworkRoaming())));
+        }
+    }
+
+    @Override
+    protected boolean isAvailable() {
+        return ImsManager.isWfcEnabledByPlatform(mContext)
+                && ImsManager.isWfcProvisionedOnDevice(mContext);
+    }
+
+    @Override
+    protected String getPreferenceKey() {
+        return KEY_WFC_SETTINGS;
+    }
+}
diff --git a/src/com/android/settings/nfc/NfcPreferenceController.java b/src/com/android/settings/nfc/NfcPreferenceController.java
new file mode 100644
index 0000000..0d31fe6
--- /dev/null
+++ b/src/com/android/settings/nfc/NfcPreferenceController.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.nfc;
+
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.nfc.NfcAdapter;
+import android.nfc.NfcManager;
+import android.os.Handler;
+import android.provider.Settings;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnPause;
+import com.android.settings.core.lifecycle.events.OnResume;
+import com.android.settings.network.AirplaneModePreferenceController;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.RestrictedPreference;
+
+import java.util.List;
+
+public class NfcPreferenceController extends PreferenceController
+        implements LifecycleObserver, OnResume, OnPause {
+
+    private static final String KEY_TOGGLE_NFC = "toggle_nfc";
+    private static final String KEY_ANDROID_BEAM_SETTINGS = "android_beam_settings";
+
+    private NfcEnabler mNfcEnabler;
+    private NfcAdapter mNfcAdapter;
+    private final Handler mHandler = new Handler();
+    private int mAirplaneMode;
+    private AirplaneModeObserver mAirplaneModeObserver;
+    private SwitchPreference mNfcPreference;
+    private RestrictedPreference mBeamPreference;
+
+    public NfcPreferenceController(Context context) {
+        super(context);
+        mNfcAdapter = NfcAdapter.getDefaultAdapter(context);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        if (!isAvailable()) {
+            removePreference(screen, KEY_TOGGLE_NFC);
+            removePreference(screen, KEY_ANDROID_BEAM_SETTINGS);
+            mNfcEnabler = null;
+            return;
+        }
+        mNfcPreference = (SwitchPreference) screen.findPreference(KEY_TOGGLE_NFC);
+        mBeamPreference = (RestrictedPreference) screen.findPreference(
+                KEY_ANDROID_BEAM_SETTINGS);
+        mNfcEnabler = new NfcEnabler(mContext, mNfcPreference, mBeamPreference);
+        String toggleable = Settings.Global.getString(mContext.getContentResolver(),
+                Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
+        final boolean useNewIA = FeatureFactory.getFactory(mContext)
+                .getDashboardFeatureProvider(mContext).isEnabled();
+        // Manually set dependencies for NFC when not toggleable.
+        if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_NFC)) {
+            if (useNewIA) {
+                mAirplaneModeObserver = new AirplaneModeObserver();
+                updateNfcPreference();
+            } else {
+                mNfcPreference.setDependency(AirplaneModePreferenceController.KEY_TOGGLE_AIRPLANE);
+                mBeamPreference.setDependency(AirplaneModePreferenceController.KEY_TOGGLE_AIRPLANE);
+            }
+        }
+    }
+
+    @Override
+    public void updateNonIndexableKeys(List<String> keys) {
+        final NfcManager manager = (NfcManager) mContext.getSystemService(Context.NFC_SERVICE);
+        if (manager != null) {
+            NfcAdapter adapter = manager.getDefaultAdapter();
+            if (adapter == null) {
+                keys.add(KEY_TOGGLE_NFC);
+                keys.add(KEY_ANDROID_BEAM_SETTINGS);
+            }
+        }
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    protected boolean isAvailable() {
+        return mNfcAdapter != null;
+    }
+
+    @Override
+    protected String getPreferenceKey() {
+        return null;
+    }
+
+    public void onResume() {
+        if (mAirplaneModeObserver != null) {
+            mAirplaneModeObserver.register();
+        }
+        if (mNfcEnabler != null) {
+            mNfcEnabler.resume();
+        }
+    }
+
+    @Override
+    public void onPause() {
+        if (mAirplaneModeObserver != null) {
+            mAirplaneModeObserver.unregister();
+        }
+        if (mNfcEnabler != null) {
+            mNfcEnabler.pause();
+        }
+    }
+
+    private void updateNfcPreference() {
+        final int airplaneMode = Settings.Global.getInt(
+                mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, mAirplaneMode);
+        if (airplaneMode == mAirplaneMode) {
+            return;
+        }
+        mAirplaneMode = airplaneMode;
+        boolean toggleable = mAirplaneMode != 1;
+        if (toggleable) {
+            mNfcAdapter.enable();
+        } else {
+            mNfcAdapter.disable();
+        }
+        mNfcPreference.setEnabled(toggleable);
+        mBeamPreference.setEnabled(toggleable);
+    }
+
+    private final class AirplaneModeObserver extends ContentObserver {
+        private final Uri AIRPLANE_MODE_URI =
+                Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON);
+
+        private AirplaneModeObserver() {
+            super(mHandler);
+        }
+
+        public void register() {
+            mContext.getContentResolver().registerContentObserver(AIRPLANE_MODE_URI, false, this);
+        }
+
+        public void unregister() {
+            mContext.getContentResolver().unregisterContentObserver(this);
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+            updateNfcPreference();
+        }
+    }
+
+}
diff --git a/src/com/android/settings/vpn2/AppDialogFragment.java b/src/com/android/settings/vpn2/AppDialogFragment.java
index 6093e89..4075c01 100644
--- a/src/com/android/settings/vpn2/AppDialogFragment.java
+++ b/src/com/android/settings/vpn2/AppDialogFragment.java
@@ -158,7 +158,7 @@
         }
         final int userId = getUserId();
         try {
-            if (mPackageInfo.packageName.equals(getConnectedPackage(mService, userId))) {
+            if (mPackageInfo.packageName.equals(VpnUtils.getConnectedPackage(mService, userId))) {
                 mService.setAlwaysOnVpnPackage(userId, null, /* lockdownEnabled */ false);
                 mService.prepareVpn(mPackageInfo.packageName, VpnConfig.LEGACY_VPN, userId);
             }
@@ -176,10 +176,4 @@
     private int getUserId() {
         return UserHandle.getUserId(mPackageInfo.applicationInfo.uid);
     }
-
-    private static String getConnectedPackage(IConnectivityManager service, final int userId)
-            throws RemoteException {
-        final VpnConfig config = service.getVpnConfig(userId);
-        return config != null ? config.user : null;
-    }
 }
diff --git a/src/com/android/settings/vpn2/AppManagementFragment.java b/src/com/android/settings/vpn2/AppManagementFragment.java
index 1a3000e..68e0659 100644
--- a/src/com/android/settings/vpn2/AppManagementFragment.java
+++ b/src/com/android/settings/vpn2/AppManagementFragment.java
@@ -21,18 +21,21 @@
 import android.app.Dialog;
 import android.app.DialogFragment;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.net.ConnectivityManager;
+import android.net.IConnectivityManager;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
 import android.support.v7.preference.Preference;
+import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -51,7 +54,8 @@
 import static android.app.AppOpsManager.OP_ACTIVATE_VPN;
 
 public class AppManagementFragment extends SettingsPreferenceFragment
-        implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
+        implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener,
+        ConfirmLockdownFragment.ConfirmLockdownListener {
 
     private static final String TAG = "AppManagementFragment";
 
@@ -63,6 +67,7 @@
 
     private PackageManager mPackageManager;
     private ConnectivityManager mConnectivityManager;
+    private IConnectivityManager mConnectivityService;
 
     // VPN app info
     private final int mUserId = UserHandle.myUserId();
@@ -108,6 +113,8 @@
 
         mPackageManager = getContext().getPackageManager();
         mConnectivityManager = getContext().getSystemService(ConnectivityManager.class);
+        mConnectivityService = IConnectivityManager.Stub
+                .asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE));
 
         mPreferenceVersion = findPreference(KEY_VERSION);
         mPreferenceAlwaysOn = (RestrictedSwitchPreference) findPreference(KEY_ALWAYS_ON_VPN);
@@ -169,13 +176,23 @@
         return true;
     }
 
-    private boolean onAlwaysOnVpnClick(final boolean isChecked) {
-        if (isChecked && isLegacyVpnLockDownOrAnotherPackageAlwaysOn()) {
-            // Show dialog if user replace always-on-vpn package and show not checked first
-            ReplaceExistingVpnFragment.show(this);
+    private boolean onAlwaysOnVpnClick(final boolean alwaysOnSetting) {
+        final boolean replacing = isAnotherVpnActive();
+        final boolean wasAlwaysOn = VpnUtils.isAlwaysOnOrLegacyLockdownActive(getActivity());
+        if (ConfirmLockdownFragment.shouldShow(replacing, wasAlwaysOn, alwaysOnSetting)) {
+            // Place a dialog to confirm that traffic should be locked down.
+            final Bundle options = null;
+            ConfirmLockdownFragment.show(this, replacing, wasAlwaysOn, alwaysOnSetting, options);
             return false;
-        } else {
-            return setAlwaysOnVpnByUI(isChecked);
+        }
+        // No need to show the dialog. Change the setting straight away.
+        return setAlwaysOnVpnByUI(alwaysOnSetting);
+    }
+
+    @Override
+    public void onConfirmLockdown(Bundle options, boolean isEnabled) {
+        if (setAlwaysOnVpnByUI(isEnabled)) {
+            updateUI();
         }
     }
 
@@ -197,7 +214,7 @@
 
     private boolean setAlwaysOnVpn(boolean isEnabled) {
          return mConnectivityManager.setAlwaysOnVpnPackageForUser(mUserId,
-                isEnabled ? mPackageName : null, /* lockdownEnabled */ false);
+                isEnabled ? mPackageName : null, /* lockdownEnabled */ true);
     }
 
     @VisibleForTesting
@@ -293,15 +310,17 @@
         return !ArrayUtils.isEmpty(ops);
     }
 
-    private boolean isLegacyVpnLockDownOrAnotherPackageAlwaysOn() {
-        if (mUserId == UserHandle.USER_SYSTEM) {
-            String lockdownKey = VpnUtils.getLockdownVpn();
-            if (lockdownKey != null) {
-                return true;
-            }
+    /**
+     * @return {@code true} if another VPN (VpnService or legacy) is connected or set as always-on.
+     */
+    private boolean isAnotherVpnActive() {
+        try {
+            final VpnConfig config = mConnectivityService.getVpnConfig(mUserId);
+            return config != null && !TextUtils.equals(config.user, mPackageName);
+        } catch (RemoteException e) {
+            Log.w(TAG, "Failure to look up active VPN", e);
+            return false;
         }
-
-        return getAlwaysOnVpnPackage() != null && !isVpnAlwaysOn();
     }
 
     public static class CannotConnectFragment extends InstrumentedDialogFragment {
@@ -334,42 +353,4 @@
                     .create();
         }
     }
-
-    public static class ReplaceExistingVpnFragment extends InstrumentedDialogFragment
-            implements DialogInterface.OnClickListener {
-        private static final String TAG = "ReplaceExistingVpn";
-
-        @Override
-        public int getMetricsCategory() {
-            return MetricsEvent.DIALOG_VPN_REPLACE_EXISTING;
-        }
-
-        public static void show(AppManagementFragment parent) {
-            if (parent.getFragmentManager().findFragmentByTag(TAG) == null) {
-                final ReplaceExistingVpnFragment frag = new ReplaceExistingVpnFragment();
-                frag.setTargetFragment(parent, 0);
-                frag.show(parent.getFragmentManager(), TAG);
-            }
-        }
-
-        @Override
-        public Dialog onCreateDialog(Bundle savedInstanceState) {
-            return new AlertDialog.Builder(getActivity())
-                    .setTitle(R.string.vpn_replace_always_on_vpn_title)
-                    .setMessage(getActivity().getString(R.string.vpn_replace_always_on_vpn_message))
-                    .setNegativeButton(getActivity().getString(R.string.vpn_cancel), null)
-                    .setPositiveButton(getActivity().getString(R.string.vpn_replace), this)
-                    .create();
-        }
-
-        @Override
-        public void onClick(DialogInterface dialog, int which) {
-            if (getTargetFragment() instanceof AppManagementFragment) {
-                final AppManagementFragment target = (AppManagementFragment) getTargetFragment();
-                if (target.setAlwaysOnVpnByUI(true)) {
-                    target.updateUI();
-                }
-            }
-        }
-    }
 }
diff --git a/src/com/android/settings/vpn2/ConfigDialogFragment.java b/src/com/android/settings/vpn2/ConfigDialogFragment.java
index 1a180c5..9dbf752 100644
--- a/src/com/android/settings/vpn2/ConfigDialogFragment.java
+++ b/src/com/android/settings/vpn2/ConfigDialogFragment.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.vpn2;
 
+import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.DialogFragment;
 import android.content.Context;
@@ -29,6 +30,7 @@
 import android.security.Credentials;
 import android.security.KeyStore;
 import android.util.Log;
+import android.view.View;
 import android.widget.Toast;
 
 import com.android.internal.logging.MetricsProto;
@@ -41,8 +43,9 @@
 /**
  * Fragment wrapper around a {@link ConfigDialog}.
  */
-public class ConfigDialogFragment extends InstrumentedDialogFragment
-        implements DialogInterface.OnClickListener {
+public class ConfigDialogFragment extends InstrumentedDialogFragment implements
+        DialogInterface.OnClickListener, DialogInterface.OnShowListener, View.OnClickListener,
+        ConfirmLockdownFragment.ConfirmLockdownListener {
     private static final String TAG_CONFIG_DIALOG = "vpnconfigdialog";
     private static final String TAG = "ConfigDialogFragment";
 
@@ -103,7 +106,31 @@
         boolean editing = args.getBoolean(ARG_EDITING);
         boolean exists = args.getBoolean(ARG_EXISTS);
 
-        return new ConfigDialog(getActivity(), this, profile, editing, exists);
+        final Dialog dialog = new ConfigDialog(getActivity(), this, profile, editing, exists);
+        dialog.setOnShowListener(this);
+        return dialog;
+    }
+
+    /**
+     * Override for the default onClick handler which also calls dismiss().
+     *
+     * @see DialogInterface.OnClickListener#onClick(DialogInterface, int)
+     */
+    @Override
+    public void onShow(DialogInterface dialogInterface) {
+        ((AlertDialog) getDialog()).getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View positiveButton) {
+        onClick(getDialog(), AlertDialog.BUTTON_POSITIVE);
+    }
+
+    @Override
+    public void onConfirmLockdown(Bundle options, boolean isEnabled) {
+        VpnProfile profile = (VpnProfile) options.getParcelable(ARG_PROFILE);
+        connect(profile, isEnabled);
+        dismiss();
     }
 
     @Override
@@ -112,24 +139,24 @@
         VpnProfile profile = dialog.getProfile();
 
         if (button == DialogInterface.BUTTON_POSITIVE) {
-            // Update KeyStore entry
-            KeyStore.getInstance().put(Credentials.VPN + profile.key, profile.encode(),
-                    KeyStore.UID_SELF, /* flags */ 0);
-
-            // Flush out previous connection, which may be an old version of the profile
-            if (!disconnect(profile)) {
-                Log.w(TAG, "Unable to remove previous connection. Continuing anyway.");
-            }
-
-            updateLockdownVpn(dialog.isVpnAlwaysOn(), profile);
-
-            // If we are not editing, connect!
-            if (!dialog.isEditing() && !VpnUtils.isVpnLockdown(profile.key)) {
-                try {
-                    connect(profile);
-                } catch (RemoteException e) {
-                    Log.e(TAG, "Failed to connect", e);
+            // Possibly throw up a dialog to explain lockdown VPN.
+            final boolean shouldLockdown = dialog.isVpnAlwaysOn();
+            final boolean shouldConnect = shouldLockdown || !dialog.isEditing();
+            final boolean wasAlwaysOn = VpnUtils.isAlwaysOnOrLegacyLockdownActive(getContext());
+            try {
+                final boolean replace = VpnUtils.isVpnActive(getContext());
+                if (shouldConnect && !isConnected(profile) &&
+                        ConfirmLockdownFragment.shouldShow(replace, wasAlwaysOn, shouldLockdown)) {
+                    final Bundle opts = new Bundle();
+                    opts.putParcelable(ARG_PROFILE, profile);
+                    ConfirmLockdownFragment.show(this, replace, wasAlwaysOn, shouldLockdown, opts);
+                } else if (shouldConnect) {
+                    connect(profile, shouldLockdown);
+                } else {
+                    save(profile, false);
                 }
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed to check active VPN state. Skipping.", e);
             }
         } else if (button == DialogInterface.BUTTON_NEUTRAL) {
             // Disable profile if connected
@@ -175,11 +202,31 @@
         }
     }
 
-    private void connect(VpnProfile profile) throws RemoteException {
-        try {
-            mService.startLegacyVpn(profile);
-        } catch (IllegalStateException e) {
-            Toast.makeText(getActivity(), R.string.vpn_no_network, Toast.LENGTH_LONG).show();
+    private void save(VpnProfile profile, boolean lockdown) {
+        KeyStore.getInstance().put(Credentials.VPN + profile.key, profile.encode(),
+                KeyStore.UID_SELF, /* flags */ 0);
+
+        // Flush out old version of profile
+        disconnect(profile);
+
+        // Notify lockdown VPN that the profile has changed.
+        updateLockdownVpn(lockdown, profile);
+    }
+
+    private void connect(VpnProfile profile, boolean lockdown) {
+        save(profile, lockdown);
+
+        // Now try to start the VPN - this is not necessary if the profile is set as lockdown,
+        // because just saving the profile in this mode will start a connection.
+        if (!VpnUtils.isVpnLockdown(profile.key)) {
+            VpnUtils.clearLockdownVpn(getContext());
+            try {
+                mService.startLegacyVpn(profile);
+            } catch (IllegalStateException e) {
+                Toast.makeText(getActivity(), R.string.vpn_no_network, Toast.LENGTH_LONG).show();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Failed to connect", e);
+            }
         }
     }
 
diff --git a/src/com/android/settings/vpn2/ConfirmLockdownFragment.java b/src/com/android/settings/vpn2/ConfirmLockdownFragment.java
new file mode 100644
index 0000000..4d643cf
--- /dev/null
+++ b/src/com/android/settings/vpn2/ConfirmLockdownFragment.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.vpn2;
+
+import android.app.Fragment;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+
+public class ConfirmLockdownFragment extends InstrumentedDialogFragment
+        implements DialogInterface.OnClickListener {
+    public interface ConfirmLockdownListener {
+        public void onConfirmLockdown(Bundle options, boolean isEnabled);
+    }
+
+    private static final String TAG = "ConfirmLockdown";
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsEvent.DIALOG_VPN_REPLACE_EXISTING;
+    }
+
+    private static final String ARG_REPLACING = "replacing";
+    private static final String ARG_LOCKDOWN_SRC = "lockdown_old";
+    private static final String ARG_LOCKDOWN_DST = "lockdown_new";
+    private static final String ARG_OPTIONS = "options";
+
+    public static boolean shouldShow(boolean replacing, boolean fromLockdown, boolean toLockdown) {
+        // We only need to show this if we are:
+        //  - replacing an existing connection
+        //  - switching on always-on mode where it was not enabled before.
+        return replacing || (toLockdown && !fromLockdown);
+    }
+
+    public static void show(Fragment parent, boolean replacing,
+            boolean fromLockdown, boolean toLockdown, Bundle options) {
+        if (parent.getFragmentManager().findFragmentByTag(TAG) != null) {
+            // Already exists. Don't show it twice.
+            return;
+        }
+        final Bundle args = new Bundle();
+        args.putBoolean(ARG_REPLACING, replacing);
+        args.putBoolean(ARG_LOCKDOWN_SRC, fromLockdown);
+        args.putBoolean(ARG_LOCKDOWN_DST, toLockdown);
+        args.putParcelable(ARG_OPTIONS, options);
+
+        final ConfirmLockdownFragment frag = new ConfirmLockdownFragment();
+        frag.setArguments(args);
+        frag.setTargetFragment(parent, 0);
+        frag.show(parent.getFragmentManager(), TAG);
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        final boolean replacing = getArguments().getBoolean(ARG_REPLACING);
+        final boolean wasAlwaysOn = getArguments().getBoolean(ARG_LOCKDOWN_SRC);
+        final boolean nowAlwaysOn = getArguments().getBoolean(ARG_LOCKDOWN_DST);
+
+        final int titleId = replacing ? R.string.vpn_replace_vpn_title : R.string.vpn_set_vpn_title;
+        final int actionId =
+                (replacing ? R.string.vpn_replace :
+                (nowAlwaysOn ? R.string.vpn_turn_on : R.string.okay));
+        final int messageId;
+        if (nowAlwaysOn) {
+            messageId = replacing
+                    ? R.string.vpn_replace_always_on_vpn_enable_message
+                    : R.string.vpn_first_always_on_vpn_message;
+        } else {
+            messageId = wasAlwaysOn
+                    ? R.string.vpn_replace_always_on_vpn_disable_message
+                    : R.string.vpn_replace_vpn_message;
+        }
+
+        return new AlertDialog.Builder(getActivity())
+                .setTitle(titleId)
+                .setMessage(messageId)
+                .setNegativeButton(R.string.cancel, null)
+                .setPositiveButton(actionId, this)
+                .create();
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        if (getTargetFragment() instanceof ConfirmLockdownListener) {
+            ((ConfirmLockdownListener) getTargetFragment()).onConfirmLockdown(
+                    getArguments().getParcelable(ARG_OPTIONS),
+                    getArguments().getBoolean(ARG_LOCKDOWN_DST));
+        }
+    }
+}
+
diff --git a/src/com/android/settings/vpn2/VpnUtils.java b/src/com/android/settings/vpn2/VpnUtils.java
index 6afa79b..5990381 100644
--- a/src/com/android/settings/vpn2/VpnUtils.java
+++ b/src/com/android/settings/vpn2/VpnUtils.java
@@ -17,16 +17,20 @@
 
 import android.content.Context;
 import android.net.ConnectivityManager;
+import android.net.IConnectivityManager;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.security.Credentials;
 import android.security.KeyStore;
 
+import com.android.internal.net.VpnConfig;
+
 /**
  * Utility functions for vpn.
  *
  * Keystore methods should only be called in system user
  */
 public class VpnUtils {
-
     public static String getLockdownVpn() {
         final byte[] value = KeyStore.getInstance().get(Credentials.LOCKDOWN_VPN);
         return value == null ? null : new String(value);
@@ -35,17 +39,42 @@
     public static void clearLockdownVpn(Context context) {
         KeyStore.getInstance().delete(Credentials.LOCKDOWN_VPN);
         // Always notify ConnectivityManager after keystore update
-        context.getSystemService(ConnectivityManager.class).updateLockdownVpn();
+        getConnectivityManager(context).updateLockdownVpn();
     }
 
     public static void setLockdownVpn(Context context, String lockdownKey) {
         KeyStore.getInstance().put(Credentials.LOCKDOWN_VPN, lockdownKey.getBytes(),
                 KeyStore.UID_SELF, /* flags */ 0);
         // Always notify ConnectivityManager after keystore update
-        context.getSystemService(ConnectivityManager.class).updateLockdownVpn();
+        getConnectivityManager(context).updateLockdownVpn();
     }
 
     public static boolean isVpnLockdown(String key) {
         return key.equals(getLockdownVpn());
     }
+
+    public static boolean isAlwaysOnOrLegacyLockdownActive(Context context) {
+        final int userId = context.getUserId();
+        return getLockdownVpn() != null
+                || getConnectivityManager(context).getAlwaysOnVpnPackageForUser(userId) != null;
+    }
+
+    public static boolean isVpnActive(Context context) throws RemoteException {
+        return getIConnectivityManager().getVpnConfig(context.getUserId()) != null;
+    }
+
+    public static String getConnectedPackage(IConnectivityManager service, final int userId)
+            throws RemoteException {
+        final VpnConfig config = service.getVpnConfig(userId);
+        return config != null ? config.user : null;
+    }
+
+    private static ConnectivityManager getConnectivityManager(Context context) {
+        return context.getSystemService(ConnectivityManager.class);
+    }
+
+    private static IConnectivityManager getIConnectivityManager() {
+        return IConnectivityManager.Stub.asInterface(
+                ServiceManager.getService(Context.CONNECTIVITY_SERVICE));
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
new file mode 100644
index 0000000..0adfea8
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.settings.network;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class MobileNetworkPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private UserManager mUserManager;
+    @Mock
+    private ConnectivityManager mConnectivityManager;
+
+    private MobileNetworkPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+        when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
+                .thenReturn(mConnectivityManager);
+    }
+
+    @Test
+    public void secondaryUser_prefIsNotAvailable() {
+        when(mUserManager.isAdminUser()).thenReturn(false);
+        when(mUserManager.hasUserRestriction(anyString(), any(UserHandle.class)))
+                .thenReturn(false);
+        when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
+                .thenReturn(true);
+
+        mController = new MobileNetworkPreferenceController(mContext);
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Test
+    public void wifiOnly_prefIsNotAvailable() {
+        when(mUserManager.isAdminUser()).thenReturn(true);
+        when(mUserManager.hasUserRestriction(anyString(), any(UserHandle.class)))
+                .thenReturn(false);
+        when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
+                .thenReturn(false);
+
+        mController = new MobileNetworkPreferenceController(mContext);
+        assertThat(mController.isAvailable()).isFalse();
+    }
+}
