diff --git a/Android.mk b/Android.mk
index 22c7143..c8b81dc 100644
--- a/Android.mk
+++ b/Android.mk
@@ -13,6 +13,8 @@
 
 LOCAL_PROGUARD_FLAG_FILES := proguard.flags
 
+LOCAL_AAPT_FLAGS += -c zz_ZZ
+
 include $(BUILD_PACKAGE)
 
 # Use the folloing include to make our test apk.
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 020cfad..12540e2 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -418,18 +418,15 @@
     <string name="device_admin_title" msgid="3562216873644263804">"Toesteladministrasie"</string>
     <string name="manage_device_admin" msgid="5059296715271077278">"Toesteladministrateurs"</string>
     <string name="manage_device_admin_summary" msgid="7672709110988761075">"Sien of deaktiveer toesteladministrateurs"</string>
-    <!-- no translation found for manage_notification_access (5799781079264981979) -->
-    <skip />
-    <!-- no translation found for manage_notification_access_summary_zero (2409912785614953348) -->
-    <skip />
-    <!-- no translation found for manage_notification_access_summary_nonzero:one (8344183614159211585) -->
-    <!-- no translation found for manage_notification_access_summary_nonzero:other (980049191810249052) -->
-    <!-- no translation found for no_notification_listeners (2767405417723149879) -->
-    <skip />
-    <!-- no translation found for notification_listener_security_warning_title (6494221261778885893) -->
-    <skip />
-    <!-- no translation found for notification_listener_security_warning_summary (2780319203595885564) -->
-    <skip />
+    <string name="manage_notification_access" msgid="5799781079264981979">"Kennisgewingtoegang"</string>
+    <string name="manage_notification_access_summary_zero" msgid="2409912785614953348">"Programme kan nie kennisgewings lees nie"</string>
+  <plurals name="manage_notification_access_summary_nonzero">
+    <item quantity="one" msgid="8344183614159211585">"%d program kan kennisgewings lees"</item>
+    <item quantity="other" msgid="980049191810249052">"%d programme kan kennisgewings lees"</item>
+  </plurals>
+    <string name="no_notification_listeners" msgid="2767405417723149879">"Geen kennisgewingluisteraars is geïnstalleer nie."</string>
+    <string name="notification_listener_security_warning_title" msgid="6494221261778885893">"Aktiveer <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
+    <string name="notification_listener_security_warning_summary" msgid="2780319203595885564">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> sal alle kennisgewings kan lees wat deur die stelsel of deur enige geïnstalleerde program geplaas is, wat dalk persoonlike inligting soos kontakname en die teks van boodskappe na jou gestuur, kan insluit. Dit sal ook hierdie kennisgewings kan verwerp of handelingknoppies daarbinne kan aanraak."</string>
     <string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
     <string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Skakel Bluetooth aan"</string>
     <string name="bluetooth_settings" msgid="1810521656168174329">"Bluetooth"</string>
@@ -1691,10 +1688,8 @@
     <string name="app_process_limit_title" msgid="4280600650253107163">"Agtergrondproses-limiet"</string>
     <string name="show_all_anrs" msgid="28462979638729082">"Wys alle ANRe"</string>
     <string name="show_all_anrs_summary" msgid="641908614413544127">"Wys Program reageer nie-dialoog vir agtergrond programme"</string>
-    <!-- no translation found for experimental_webview (4492200819033780927) -->
-    <skip />
-    <!-- no translation found for experimental_webview_summary (3431620080869482446) -->
-    <skip />
+    <string name="experimental_webview" msgid="4492200819033780927">"Gebruik eksperimentele WebView"</string>
+    <string name="experimental_webview_summary" msgid="3431620080869482446">"Programme sal die jongste (beta) WebView gebruik"</string>
     <string name="data_usage_summary_title" msgid="3804110657238092929">"Datagebruik"</string>
     <string name="data_usage_cycle" msgid="5652529796195787949">"Datagebruiksiklus"</string>
     <string name="data_usage_menu_roaming" msgid="8042359966835203296">"Dataswerwing"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index aa2c98e..715e9b3 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -555,7 +555,7 @@
     <string name="wifi_scan_always_available" msgid="3470564139944368030">"Scanning er altid tilgængelig"</string>
     <string name="wifi_scan_always_available_summary" msgid="7768204638882691453">"Lad Googles placeringstjeneste og andre apps scanne efter netværk, selv når Wi-Fi er slået fra"</string>
     <string name="wifi_install_credentials" msgid="3551143317298272860">"Installer certifikater"</string>
-    <string name="wifi_scan_notify_text_location_on" msgid="8135076005488914200">"Google- og andre apps scanner muligvis efter netværk i nærheden, selv når Wi-Fi er slukket, for at forbedre placeringsnøjagtighed m.m.. Hvis du ikke ønsker dette, kan du gå til Avanceret &gt; Scanning altid tilgængelig."</string>
+    <string name="wifi_scan_notify_text_location_on" msgid="8135076005488914200">"Google og andre apps scanner muligvis efter netværk i nærheden, selv når Wi-Fi er slukket, for at forbedre placeringsnøjagtighed m.m.. Hvis du ikke ønsker dette, kan du gå til Avanceret &gt; Scanning altid tilgængelig."</string>
     <string name="wifi_scan_notify_text_location_off" msgid="6323983741393280935">"Apps kan søge efter netværk i nærheden, selv når Wi-Fi er slukket. Hvis du ikke ønsker, at dette sker, skal du gå til Avanceret &gt; Scanning altid tilgængelig."</string>
     <string name="wifi_scan_notify_remember_choice" msgid="5340097010842405981">"Vis ikke igen"</string>
     <string name="wifi_setting_sleep_policy_title" msgid="5149574280392680092">"Hold Wi-Fi aktiveret i dvale"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 1f2da46..2e29f5d 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -303,10 +303,10 @@
     <string name="biometric_weak_liveliness_summary" msgid="4199587000948042325">"Augenzwinkern beim Entsperren erforderlich"</string>
     <string name="lock_after_timeout" msgid="4590337686681194648">"Automatisch sperren"</string>
     <string name="lock_after_timeout_summary" msgid="6128431871360905631">"Nach <xliff:g id="TIMEOUT_STRING">%1$s</xliff:g> im Ruhezustand"</string>
-    <string name="show_owner_info_on_lockscreen_label" msgid="5074906168357568434">"Inhaberinformationen auf Sperrbildschirm anzeigen"</string>
+    <string name="show_owner_info_on_lockscreen_label" msgid="5074906168357568434">"Infos zum Eigentümer auf Sperrbildschirm anzeigen"</string>
     <string name="owner_info_settings_title" msgid="2723190010708381889">"Info zum Eigentümer"</string>
     <string name="owner_info_settings_summary" msgid="3800834657847339570"></string>
-    <string name="owner_info_settings_edit_text_hint" msgid="4608681417960923911">"Text für Display-Sperre eingeben"</string>
+    <string name="owner_info_settings_edit_text_hint" msgid="4608681417960923911">"Text für Sperrbildschirm eingeben"</string>
     <string name="show_user_info_on_lockscreen_label" msgid="8408914624925608365">"Nutzerinformationen bei Bildschirmsperre anzeigen"</string>
     <string name="user_info_settings_title" msgid="1195015434996724736">"Nutzerinformationen"</string>
     <string name="location_settings_title" msgid="4483843407328665068">"Standortzugriff"</string>
@@ -829,7 +829,7 @@
     <string name="memory_media_usage" msgid="3738830697707880405">"Medien"</string>
     <string name="memory_downloads_usage" msgid="3755173051677533027">"Downloads"</string>
     <string name="memory_dcim_usage" msgid="558887013613822577">"Bilder, Videos"</string>
-    <string name="memory_music_usage" msgid="1363785144783011606">"Audio (Musik, Töne, usw.)"</string>
+    <string name="memory_music_usage" msgid="1363785144783011606">"Audio (Musik, Töne usw.)"</string>
     <string name="memory_media_misc_usage" msgid="235452944021647124">"Sonstiges"</string>
     <string name="memory_media_cache_usage" msgid="6704293333141177910">"Daten im Cache"</string>
     <string name="sd_eject" product="nosdcard" msgid="4988563376492400073">"Gemeinsamen Speicher trennen"</string>
@@ -1336,7 +1336,7 @@
     <string name="accessibility_global_gesture_preference_title" msgid="6752037184140789970">"Bedienungshilfenverknüpfung"</string>
     <string name="accessibility_global_gesture_preference_summary_on" msgid="6180927399052022181">"An"</string>
     <string name="accessibility_global_gesture_preference_summary_off" msgid="8102103337813609849">"Aus"</string>
-    <string name="accessibility_global_gesture_preference_description" msgid="750438015254396963">"Wenn diese Funktion aktiviert ist, können Sie Bedienungshilfen schnell in zwei Schritten aktivieren:"\n\n"1. Schritt: Drücken und halten Sie die Ein-/Austaste, bis Sie einen Ton hören oder eine Vibration spüren."\n\n"2. Schritt: Berühren und halten Sie mit zwei Fingern, bis Sie eine Audiobestätigung hören."\n\n"Falls das Gerät mehrere Nutzer hat, werden die Bedienungshilfen durch Verwendung dieser Verknüpfung in der Bildschirmsperre solange aktiviert, bis das Gerät entsperrt ist."</string>
+    <string name="accessibility_global_gesture_preference_description" msgid="750438015254396963">"Wenn diese Funktion aktiviert ist, können Sie Bedienungshilfen schnell in zwei Schritten aktivieren:"\n\n"Schritt 1: Drücken und halten Sie die Ein-/Austaste, bis Sie einen Ton hören oder eine Vibration spüren."\n\n"Schritt 2: Berühren und halten Sie mit zwei Fingern, bis Sie eine Audiobestätigung hören."\n\n"Falls das Gerät mehrere Nutzer hat, werden die Bedienungshilfen durch Verwendung dieser Verknüpfung in der Bildschirmsperre solange aktiviert, bis das Gerät entsperrt ist."</string>
     <string name="accessibility_toggle_large_text_preference_title" msgid="6307247527580207161">"Großer Text"</string>
     <string name="accessibility_toggle_screen_magnification_preference_title" msgid="2472285215737820469">"Bildschirmvergrößerung"</string>
     <string name="accessibility_toggle_screen_magnification_auto_update_preference_title" msgid="7218498768415430963">"Vergrößerung autom. aktualisieren"</string>
@@ -1602,7 +1602,7 @@
     <string name="sync_enabled" msgid="4551148952179416813">"Synchronisierung AN"</string>
     <string name="sync_disabled" msgid="8511659877596511991">"Synchronisierung AUS"</string>
     <string name="sync_error" msgid="5060969083117872149">"Synchronisierungsfehler"</string>
-    <string name="last_synced" msgid="4242919465367022234">"Zuletzt synchronisiert am <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="last_synced" msgid="4242919465367022234">"Zuletzt synchronisiert: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
     <string name="sync_in_progress" msgid="5151314196536070569">"Synchronisieren…"</string>
     <string name="settings_backup" msgid="2274732978260797031">"Einstellungen sichern"</string>
     <string name="settings_backup_summary" msgid="7916877705938054035">"Meine Einstellungen sichern"</string>
@@ -1710,7 +1710,7 @@
     <string name="data_usage_empty" msgid="8621855507876539282">"Kein Datenverbrauch in diesem Zeitraum"</string>
     <string name="data_usage_label_foreground" msgid="4938034231928628164">"Vordergrund"</string>
     <string name="data_usage_label_background" msgid="3225844085975764519">"Hintergrund"</string>
-    <string name="data_usage_app_restricted" msgid="3568465218866589705">"eingeschränkt"</string>
+    <string name="data_usage_app_restricted" msgid="3568465218866589705">"Eingeschränkt"</string>
     <string name="data_usage_disable_mobile" msgid="5211007048880167438">"Mobilfunk deaktivieren?"</string>
     <string name="data_usage_disable_mobile_limit" msgid="4644364396844393848">"Limit festlegen"</string>
     <string name="data_usage_disable_4g_limit" msgid="6233554774946681175">"4G-Datenlimit festlegen"</string>
@@ -1743,7 +1743,7 @@
     <string name="data_usage_cycle_editor_positive" msgid="8821760330497941117">"Übernehmen"</string>
     <string name="data_usage_warning_editor_title" msgid="3704136912240060339">"Warnung für Datenverbrauch festlegen"</string>
     <string name="data_usage_limit_editor_title" msgid="9153595142385030015">"Limit festlegen"</string>
-    <string name="data_usage_limit_dialog_title" msgid="3023111643632996097">"Begrenzung des Datenverbrauchs"</string>
+    <string name="data_usage_limit_dialog_title" msgid="3023111643632996097">"Datenverbrauch begrenzen"</string>
     <string name="data_usage_limit_dialog_mobile" product="tablet" msgid="3893348029612821262">"Ihre mobile Datenverbindung wird deaktiviert, sobald das angegebene Limit erreicht ist."\n\n"Der Datenverbrauch wird von Ihrem Tablet berechnet und kann von der Abrechnung Ihres Mobilfunkanbieters abweichen. Ziehen Sie deshalb die Verwendung eines niedrigen Limits in Betracht."</string>
     <string name="data_usage_limit_dialog_mobile" product="default" msgid="7962145861903746827">"Ihre mobile Datenverbindung wird deaktiviert, sobald das angegebene Limit erreicht ist."\n\n"Der Datenverbrauch wird von Ihrem Telefon berechnet und kann von der Abrechnung Ihres Mobilfunkanbieters abweichen. Ziehen Sie deshalb die Verwendung eines niedrigen Limits in Betracht."</string>
     <string name="data_usage_restrict_background_title" msgid="2201315502223035062">"Hintergrunddaten beschränken?"</string>
@@ -1756,8 +1756,8 @@
     <string name="data_usage_uninstalled_apps_users" msgid="7986294489899813194">"Entfernte Apps und Nutzer"</string>
     <string name="data_usage_received_sent" msgid="5039699009276621757">"<xliff:g id="RECEIVED">%1$s</xliff:g> erhalten, <xliff:g id="SENT">%2$s</xliff:g> gesendet"</string>
     <string name="data_usage_total_during_range" msgid="4091294280619255237">"<xliff:g id="RANGE">%2$s</xliff:g>: ca. <xliff:g id="TOTAL">%1$s</xliff:g> verwendet"</string>
-    <string name="data_usage_total_during_range_mobile" product="tablet" msgid="5961720793603268572">"<xliff:g id="RANGE">%2$s</xliff:g>: ca. <xliff:g id="TOTAL">%1$s</xliff:g> verwendet. Abrechnung des Datenverbrauchs durch Tablet. Kann von Mobilfunkanbieter abweichen."</string>
-    <string name="data_usage_total_during_range_mobile" product="default" msgid="1625833170144610767">"<xliff:g id="RANGE">%2$s</xliff:g>: ca. <xliff:g id="TOTAL">%1$s</xliff:g> verwendet. Abrechnung des Datenverbrauchs durch Telefon. Kann von Mobilfunkanbieter abweichen."</string>
+    <string name="data_usage_total_during_range_mobile" product="tablet" msgid="5961720793603268572">"<xliff:g id="RANGE">%2$s</xliff:g>: ca. <xliff:g id="TOTAL">%1$s</xliff:g> verbraucht. Abrechnung des Datenverbrauchs durch Tablet. Kann von Mobilfunkanbieter abweichen."</string>
+    <string name="data_usage_total_during_range_mobile" product="default" msgid="1625833170144610767">"<xliff:g id="RANGE">%2$s</xliff:g>: ca. <xliff:g id="TOTAL">%1$s</xliff:g> verbraucht. Abrechnung des Datenverbrauchs durch Telefon. Kann von Mobilfunkanbieter abweichen."</string>
     <string name="data_usage_metered_title" msgid="6204750602856383278">"Mobile Hotspots"</string>
     <string name="data_usage_metered_body" msgid="4959032833706695848">"Wählen Sie die WLAN-Netzwerke aus, die mobile Hotspots sind. Die Verwendung dieser Netzwerke kann für Apps im Hintergrund eingeschränkt werden. Eventuell senden Apps auch eine Warnung, bevor diese Netzwerke für umfangreiche Downloads verwendet werden."</string>
     <string name="data_usage_metered_mobile" msgid="5423305619126978393">"Mobilfunknetze"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 234c813..1cdbe07 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -418,18 +418,15 @@
     <string name="device_admin_title" msgid="3562216873644263804">"Διαχείριση συσκευής"</string>
     <string name="manage_device_admin" msgid="5059296715271077278">"Διαχειριστές συσκευών"</string>
     <string name="manage_device_admin_summary" msgid="7672709110988761075">"Προβολή ή απενεργοποίηση των διαχειριστών συσκευής"</string>
-    <!-- no translation found for manage_notification_access (5799781079264981979) -->
-    <skip />
-    <!-- no translation found for manage_notification_access_summary_zero (2409912785614953348) -->
-    <skip />
-    <!-- no translation found for manage_notification_access_summary_nonzero:one (8344183614159211585) -->
-    <!-- no translation found for manage_notification_access_summary_nonzero:other (980049191810249052) -->
-    <!-- no translation found for no_notification_listeners (2767405417723149879) -->
-    <skip />
-    <!-- no translation found for notification_listener_security_warning_title (6494221261778885893) -->
-    <skip />
-    <!-- no translation found for notification_listener_security_warning_summary (2780319203595885564) -->
-    <skip />
+    <string name="manage_notification_access" msgid="5799781079264981979">"Πρόσβαση σε ειδοποιήσεις"</string>
+    <string name="manage_notification_access_summary_zero" msgid="2409912785614953348">"Οι εφαρμογές δεν μπορούν να διαβάσουν ειδοποιήσεις"</string>
+  <plurals name="manage_notification_access_summary_nonzero">
+    <item quantity="one" msgid="8344183614159211585">"%d εφαρμογή μπορεί να διαβάσει ειδοποιήσεις"</item>
+    <item quantity="other" msgid="980049191810249052">"%d εφαρμογές μπορούν να διαβάσουν ειδοποιήσεις"</item>
+  </plurals>
+    <string name="no_notification_listeners" msgid="2767405417723149879">"Δεν έχουν εγκατασταθεί υπηρεσίες ακρόασης ειδοποιήσεων."</string>
+    <string name="notification_listener_security_warning_title" msgid="6494221261778885893">"Ενεργοποίηση <xliff:g id="SERVICE">%1$s</xliff:g>;"</string>
+    <string name="notification_listener_security_warning_summary" msgid="2780319203595885564">"Η εφαρμογή <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> θα μπορεί να διαβάζει όλες τις ειδοποιήσεις που δημοσιεύει το σύστημα ή οποιαδήποτε εγκατεστημένη εφαρμογή, οι οποίες ενδέχεται να συμπεριλαμβάνουν προσωπικά στοιχεία, όπως ονόματα επαφών και κείμενα από μηνύματα που έχετε λάβει. Θα έχει επίσης τη δυνατότητα να απορρίπτει αυτές τις ειδοποιήσεις ή να αγγίζει τα κουμπιά ενεργειών που περιέχονται σε αυτές."</string>
     <string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
     <string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Ενεργοποίηση Bluetooth"</string>
     <string name="bluetooth_settings" msgid="1810521656168174329">"Bluetooth"</string>
@@ -1691,10 +1688,8 @@
     <string name="app_process_limit_title" msgid="4280600650253107163">"Όριο διεργασ. παρασκηνίου"</string>
     <string name="show_all_anrs" msgid="28462979638729082">"Εμφάνιση όλων των ANR"</string>
     <string name="show_all_anrs_summary" msgid="641908614413544127">"Εμφ.του παραθ. \"Η εφαρμ.δεν αποκρ.\" για εφ.παρασκ."</string>
-    <!-- no translation found for experimental_webview (4492200819033780927) -->
-    <skip />
-    <!-- no translation found for experimental_webview_summary (3431620080869482446) -->
-    <skip />
+    <string name="experimental_webview" msgid="4492200819033780927">"Χρήση πειραμ. προβ. ιστού"</string>
+    <string name="experimental_webview_summary" msgid="3431620080869482446">"Οι εφαρμ. θα χρησιμ. τη νέα (beta) προβολή ιστου"</string>
     <string name="data_usage_summary_title" msgid="3804110657238092929">"Χρήση δεδομένων"</string>
     <string name="data_usage_cycle" msgid="5652529796195787949">"Κύκλος δεδομένων χρήσης"</string>
     <string name="data_usage_menu_roaming" msgid="8042359966835203296">"Περιαγωγή δεδομένων"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index f7bb72d..7e346b6 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -418,18 +418,15 @@
     <string name="device_admin_title" msgid="3562216873644263804">"Device administration"</string>
     <string name="manage_device_admin" msgid="5059296715271077278">"Device administrators"</string>
     <string name="manage_device_admin_summary" msgid="7672709110988761075">"View or deactivate device administrators"</string>
-    <!-- no translation found for manage_notification_access (5799781079264981979) -->
-    <skip />
-    <!-- no translation found for manage_notification_access_summary_zero (2409912785614953348) -->
-    <skip />
-    <!-- no translation found for manage_notification_access_summary_nonzero:one (8344183614159211585) -->
-    <!-- no translation found for manage_notification_access_summary_nonzero:other (980049191810249052) -->
-    <!-- no translation found for no_notification_listeners (2767405417723149879) -->
-    <skip />
-    <!-- no translation found for notification_listener_security_warning_title (6494221261778885893) -->
-    <skip />
-    <!-- no translation found for notification_listener_security_warning_summary (2780319203595885564) -->
-    <skip />
+    <string name="manage_notification_access" msgid="5799781079264981979">"Notification access"</string>
+    <string name="manage_notification_access_summary_zero" msgid="2409912785614953348">"Apps cannot read notifications"</string>
+  <plurals name="manage_notification_access_summary_nonzero">
+    <item quantity="one" msgid="8344183614159211585">"%d app can read notifications"</item>
+    <item quantity="other" msgid="980049191810249052">"%d apps can read notifications"</item>
+  </plurals>
+    <string name="no_notification_listeners" msgid="2767405417723149879">"No notification listeners are installed."</string>
+    <string name="notification_listener_security_warning_title" msgid="6494221261778885893">"Enable <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
+    <string name="notification_listener_security_warning_summary" msgid="2780319203595885564">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> will be able to read all notifications posted by the system or any installed app, which may include personal information such as contact names and the text of messages sent to you. It will also be able to dismiss these notifications or touch action buttons within them."</string>
     <string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
     <string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Turn on Bluetooth"</string>
     <string name="bluetooth_settings" msgid="1810521656168174329">"Bluetooth"</string>
@@ -1691,10 +1688,8 @@
     <string name="app_process_limit_title" msgid="4280600650253107163">"Background process limit"</string>
     <string name="show_all_anrs" msgid="28462979638729082">"Show all ANRs"</string>
     <string name="show_all_anrs_summary" msgid="641908614413544127">"Show App Not Responding dialogue for background apps"</string>
-    <!-- no translation found for experimental_webview (4492200819033780927) -->
-    <skip />
-    <!-- no translation found for experimental_webview_summary (3431620080869482446) -->
-    <skip />
+    <string name="experimental_webview" msgid="4492200819033780927">"Use Experimental WebView"</string>
+    <string name="experimental_webview_summary" msgid="3431620080869482446">"Apps will use the newest (beta) WebView"</string>
     <string name="data_usage_summary_title" msgid="3804110657238092929">"Data usage"</string>
     <string name="data_usage_cycle" msgid="5652529796195787949">"Data usage cycle"</string>
     <string name="data_usage_menu_roaming" msgid="8042359966835203296">"Data roaming"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index a21c191..663729f 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -1041,7 +1041,7 @@
     <string name="lockpattern_settings_enable_summary" msgid="1165707416664252167">"برای باز کردن قفل صفحه باید یک الگو بکشید"</string>
     <string name="lockpattern_settings_enable_visible_pattern_title" msgid="2615606088906120711">"الگو را قابل مشاهده کنید"</string>
     <string name="lockpattern_settings_enable_tactile_feedback_title" msgid="8898518337442601027">"لرزش هنگام لمس"</string>
-    <string name="lockpattern_settings_enable_power_button_instantly_locks" msgid="5735444062633666327">"دکمه روشن/خاموش فوراً دستگاه را قفل کند"</string>
+    <string name="lockpattern_settings_enable_power_button_instantly_locks" msgid="5735444062633666327">"قفل‌شدن فوری با دکمه روشن/خاموش"</string>
     <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>
@@ -1340,7 +1340,7 @@
     <string name="accessibility_toggle_screen_magnification_preference_title" msgid="2472285215737820469">"بزرگنمایی صفحه"</string>
     <string name="accessibility_toggle_screen_magnification_auto_update_preference_title" msgid="7218498768415430963">"به‌روزرسانی خودکار بزرگنمایی صفحه"</string>
     <string name="accessibility_toggle_screen_magnification_auto_update_preference_summary" msgid="4392059334816220155">"به‌روزرسانی بزرگنمایی صفحه در انتقال‌های برنامه"</string>
-    <string name="accessibility_power_button_ends_call_prerefence_title" msgid="6673851944175874235">"دکمه روشن/خاموش به تماس پایان می‌دهد"</string>
+    <string name="accessibility_power_button_ends_call_prerefence_title" msgid="6673851944175874235">"قطع تماس با دکمه روشن/خاموش"</string>
     <string name="accessibility_toggle_speak_password_preference_title" msgid="5986628515113204844">"گفتن گذرواژه‎ها"</string>
     <string name="accessibility_long_press_timeout_preference_title" msgid="6708467774619266508">"تأخیر لمس کردن و نگه داشتن"</string>
     <string name="accessibility_menu_item_settings" msgid="3344942964710773365">"تنظیمات"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index e4d5ac3..794de53 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -418,18 +418,15 @@
     <string name="device_admin_title" msgid="3562216873644263804">"Amministrazione dispositivo"</string>
     <string name="manage_device_admin" msgid="5059296715271077278">"Amministratori dispositivo"</string>
     <string name="manage_device_admin_summary" msgid="7672709110988761075">"Visualizza o disattiva amministratori dispositivo"</string>
-    <!-- no translation found for manage_notification_access (5799781079264981979) -->
-    <skip />
-    <!-- no translation found for manage_notification_access_summary_zero (2409912785614953348) -->
-    <skip />
-    <!-- no translation found for manage_notification_access_summary_nonzero:one (8344183614159211585) -->
-    <!-- no translation found for manage_notification_access_summary_nonzero:other (980049191810249052) -->
-    <!-- no translation found for no_notification_listeners (2767405417723149879) -->
-    <skip />
-    <!-- no translation found for notification_listener_security_warning_title (6494221261778885893) -->
-    <skip />
-    <!-- no translation found for notification_listener_security_warning_summary (2780319203595885564) -->
-    <skip />
+    <string name="manage_notification_access" msgid="5799781079264981979">"Accesso alle notifiche"</string>
+    <string name="manage_notification_access_summary_zero" msgid="2409912785614953348">"Le app non possono leggere le notifiche"</string>
+  <plurals name="manage_notification_access_summary_nonzero">
+    <item quantity="one" msgid="8344183614159211585">"L\'app %d può leggere le notifiche"</item>
+    <item quantity="other" msgid="980049191810249052">"Le app %d possono leggere le notifiche"</item>
+  </plurals>
+    <string name="no_notification_listeners" msgid="2767405417723149879">"Nessun listener di notifica installato."</string>
+    <string name="notification_listener_security_warning_title" msgid="6494221261778885893">"Attivare <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
+    <string name="notification_listener_security_warning_summary" msgid="2780319203595885564">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> sarà in grado di leggere tutte le notifiche pubblicate dal sistema o da qualsiasi app installata, le quali potrebbero includere informazioni personali come i nomi dei contatti e il testo dei messaggi ricevuti. Sarà inoltre in grado di ignorare tali notifiche o di attivare pulsanti di azione al loro interno."</string>
     <string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
     <string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Attiva Bluetooth"</string>
     <string name="bluetooth_settings" msgid="1810521656168174329">"Bluetooth"</string>
@@ -1691,10 +1688,8 @@
     <string name="app_process_limit_title" msgid="4280600650253107163">"Limite processi background"</string>
     <string name="show_all_anrs" msgid="28462979638729082">"Mostra tutti errori ANR"</string>
     <string name="show_all_anrs_summary" msgid="641908614413544127">"Mostra finestra ANR per applicazioni in background"</string>
-    <!-- no translation found for experimental_webview (4492200819033780927) -->
-    <skip />
-    <!-- no translation found for experimental_webview_summary (3431620080869482446) -->
-    <skip />
+    <string name="experimental_webview" msgid="4492200819033780927">"Usa WebView sperimentale"</string>
+    <string name="experimental_webview_summary" msgid="3431620080869482446">"Le app utilizzeranno la WebView più recente (Beta)"</string>
     <string name="data_usage_summary_title" msgid="3804110657238092929">"Utilizzo dati"</string>
     <string name="data_usage_cycle" msgid="5652529796195787949">"Ciclo utilizzo dati"</string>
     <string name="data_usage_menu_roaming" msgid="8042359966835203296">"Roaming dei dati"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index d026ef1..6eecff4 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -274,10 +274,10 @@
     <string name="roaming_disable" msgid="1295279574370898378">"Koble til datatjenester ved roaming"</string>
     <string name="roaming_reenable_message" msgid="9141007271031717369">"Du har mistet datatilkobling fordi du forlot hjemmenettet med dataroaming av."</string>
     <string name="roaming_turn_it_on_button" msgid="4387601818162120589">"Slå på"</string>
-    <string name="roaming_warning" msgid="7625933694709170887">"Hvis du du tillater datastreifing, kan det påløpe høye kostnader."</string>
-    <string name="roaming_warning_multiuser" product="tablet" msgid="6458990250829214777">"Når du tillater datastreifing, kan dette føre til høye kostnader."\n\n"Denne innstillingen påvirker alle brukerne på dette nettbrettet."</string>
-    <string name="roaming_warning_multiuser" product="default" msgid="6368421100292355440">"Når du tillater datastreifing, kan dette føre til høye kostnader."\n\n"Denne innstillingen påvirker alle brukerne på denne telefonen."</string>
-    <string name="roaming_reenable_title" msgid="6068100976707316772">"Vil du tillate datastreifing?"</string>
+    <string name="roaming_warning" msgid="7625933694709170887">"Å tillate roaming kan medføre høye datakostnader."</string>
+    <string name="roaming_warning_multiuser" product="tablet" msgid="6458990250829214777">"Når du tillater roaming, kan dette føre til høye datakostnader."\n\n"Denne innstillingen påvirker alle brukerne på dette nettbrettet."</string>
+    <string name="roaming_warning_multiuser" product="default" msgid="6368421100292355440">"Når du tillater roaming, kan dette føre til høye datakostnader."\n\n"Denne innstillingen påvirker alle brukerne på denne telefonen."</string>
+    <string name="roaming_reenable_title" msgid="6068100976707316772">"Vil du tillate roaming?"</string>
     <string name="networks" msgid="6333316876545927039">"Operatør"</string>
     <string name="sum_carrier_select" msgid="3616956422251879163">"Velg en nettverksoperatør"</string>
     <string name="date_and_time_settings_title" msgid="3350640463596716780">"Dato og tid"</string>
@@ -895,7 +895,7 @@
     <string name="apn_auth_type_pap_chap" msgid="9102343063036134541">"CHAP"</string>
     <string name="apn_type" msgid="469613123902220544">"APN-type"</string>
     <string name="apn_protocol" msgid="3272222921649348640">"APN-protokoll"</string>
-    <string name="apn_roaming_protocol" msgid="3386954381510788422">"APN-protokoll ved streifing"</string>
+    <string name="apn_roaming_protocol" msgid="3386954381510788422">"APN-protokoll ved roaming"</string>
     <string name="carrier_enabled" msgid="407655861175280806">"Aktivering eller deaktivering av APN"</string>
     <string name="carrier_enabled_summaryOn" msgid="6338915271908057531">"APN aktivert"</string>
     <string name="carrier_enabled_summaryOff" msgid="4300790190221203756">"APN er deaktivert"</string>
@@ -1697,7 +1697,7 @@
     <skip />
     <string name="data_usage_summary_title" msgid="3804110657238092929">"Databruk"</string>
     <string name="data_usage_cycle" msgid="5652529796195787949">"Databruksyklus"</string>
-    <string name="data_usage_menu_roaming" msgid="8042359966835203296">"Datastreifing"</string>
+    <string name="data_usage_menu_roaming" msgid="8042359966835203296">"Roaming"</string>
     <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Begrensning av bakgrunnsdata"</string>
     <string name="data_usage_menu_split_4g" msgid="5322857680792601899">"Separat 4G-bruk"</string>
     <string name="data_usage_menu_show_wifi" msgid="5056401102877964564">"Vis Wi-Fi-bruk"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index bafc8be..255fed7 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -713,19 +713,19 @@
     <string name="dock_settings" msgid="1820107306693002541">"Dock"</string>
     <string name="dock_settings_title" msgid="9161438664257429372">"Configurações de dock"</string>
     <string name="dock_audio_settings_title" msgid="3324750259959570305">"Áudio"</string>
-    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Configurações para o dock do computador anexo"</string>
-    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Configurações para o dock do carro anexo"</string>
+    <string name="dock_audio_summary_desk" msgid="6487784412371139335">"Configurações para a dock conectada ao computador"</string>
+    <string name="dock_audio_summary_car" msgid="6740897586006248450">"Configurações para a dock p/ carro conectada"</string>
     <string name="dock_audio_summary_none" product="tablet" msgid="8215337394914283607">"Tablet não encaixado"</string>
     <string name="dock_audio_summary_none" product="default" msgid="289909253741048784">"Telefone não encaixado"</string>
     <string name="dock_audio_summary_unknown" msgid="4465059868974255693">"Configurações para o dock anexo"</string>
     <string name="dock_not_found_title" msgid="3290961741828952424">"Dock não encontrado"</string>
-    <string name="dock_not_found_text" product="tablet" msgid="8405432495282299143">"É necessário que você encaixe seu tablet antes de configurar o áudio do dock."</string>
-    <string name="dock_not_found_text" product="default" msgid="1460497923342627801">"É necessário que você encaixe o telefone antes de configurar o áudio do dock."</string>
-    <string name="dock_sounds_enable_title" msgid="885839627097024110">"Som de inserção no dock"</string>
-    <string name="dock_sounds_enable_summary_on" product="tablet" msgid="838102386448981339">"Reproduzir sons ao inserir ou remover o tablet do dock"</string>
-    <string name="dock_sounds_enable_summary_on" product="default" msgid="8491180514199743771">"Reproduzir sons ao inserir ou remover o telefone do dock."</string>
-    <string name="dock_sounds_enable_summary_off" product="tablet" msgid="5077843049805652363">"Não reproduzir sons ao inserir ou remover o tablet do dock"</string>
-    <string name="dock_sounds_enable_summary_off" product="default" msgid="3151046599205265919">"Não reproduzir sons ao inserir ou remover o telefone do dock."</string>
+    <string name="dock_not_found_text" product="tablet" msgid="8405432495282299143">"É necessário que você encaixe seu tablet antes de configurar o áudio da dock."</string>
+    <string name="dock_not_found_text" product="default" msgid="1460497923342627801">"É necessário que você encaixe o telefone antes de configurar o áudio da dock."</string>
+    <string name="dock_sounds_enable_title" msgid="885839627097024110">"Som de inserção na dock"</string>
+    <string name="dock_sounds_enable_summary_on" product="tablet" msgid="838102386448981339">"Reproduzir sons ao inserir ou remover o tablet da dock"</string>
+    <string name="dock_sounds_enable_summary_on" product="default" msgid="8491180514199743771">"Reproduzir sons ao inserir ou remover o telefone da dock."</string>
+    <string name="dock_sounds_enable_summary_off" product="tablet" msgid="5077843049805652363">"Não reproduzir sons ao inserir ou remover o tablet da dock"</string>
+    <string name="dock_sounds_enable_summary_off" product="default" msgid="3151046599205265919">"Não reproduzir sons ao inserir ou remover o telefone da dock."</string>
     <string name="account_settings" msgid="6403589284618783461">"Contas"</string>
     <string name="search_settings" msgid="1910951467596035063">"Pesquisar"</string>
     <string name="search_settings_summary" msgid="9205656546570654169">"Gerenciar configurações e histórico de pesquisa"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4cb20c4..c266e0b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4460,6 +4460,8 @@
     <string name="user_rename">RENAME</string>
     <!-- Preference label for custom restrictions [CHAR LIMIT=35] -->
     <string name="app_restrictions_custom_label">Set application limits</string>
+    <!-- Summary for app entries that are controlled by another entry [CHAR LIMIT=none] -->
+    <string name="user_restrictions_controlled_by">Controlled by <xliff:g id="app">%1$s</xliff:g></string>
 
     <!-- Restrictions title for configuring wifi and mobile [CHAR LIMIT=35] -->
     <string name="restriction_wifi_config_title">Wi\u2011Fi and Mobile</string>
diff --git a/src/com/android/settings/AccessibilitySettings.java b/src/com/android/settings/AccessibilitySettings.java
index 8b7a8c6..ec00892 100644
--- a/src/com/android/settings/AccessibilitySettings.java
+++ b/src/com/android/settings/AccessibilitySettings.java
@@ -726,25 +726,22 @@
 
             // Determine enabled services and accessibility state.
             ComponentName toggledService = ComponentName.unflattenFromString(preferenceKey);
-            final boolean accessibilityEnabled;
+            boolean accessibilityEnabled = false;
             if (enabled) {
+                enabledServices.add(toggledService);
                 // Enabling at least one service enables accessibility.
                 accessibilityEnabled = true;
-                enabledServices.add(toggledService);
             } else {
+                enabledServices.remove(toggledService);
                 // Check how many enabled and installed services are present.
-                int enabledAndInstalledServiceCount = 0;
                 Set<ComponentName> installedServices = sInstalledServices;
                 for (ComponentName enabledService : enabledServices) {
                     if (installedServices.contains(enabledService)) {
-                        enabledAndInstalledServiceCount++;
+                        // Disabling the last service disables accessibility.
+                        accessibilityEnabled = true;
+                        break;
                     }
                 }
-                // Disabling the last service disables accessibility.
-                accessibilityEnabled = enabledAndInstalledServiceCount > 1
-                        || (enabledAndInstalledServiceCount == 1
-                        && !installedServices.contains(toggledService));
-                enabledServices.remove(toggledService);
             }
 
             // Update the enabled services setting.
diff --git a/src/com/android/settings/LocalePicker.java b/src/com/android/settings/LocalePicker.java
index 8ea99a1..6600703 100644
--- a/src/com/android/settings/LocalePicker.java
+++ b/src/com/android/settings/LocalePicker.java
@@ -23,8 +23,10 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ListView;
+import android.content.Context;
 
 import com.android.settings.SettingsPreferenceFragment.SettingsDialogFragment;
+import com.android.settings.DevelopmentSettings;
 
 import java.util.Locale;
 
@@ -46,6 +48,15 @@
     }
 
     @Override
+    protected boolean isInDeveloperMode() {
+        final boolean showDev = getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,
+                Context.MODE_PRIVATE).getBoolean(
+                DevelopmentSettings.PREF_SHOW,
+                android.os.Build.TYPE.equals("eng"));
+        return showDev;
+    }
+
+    @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         if (savedInstanceState != null && savedInstanceState.containsKey(SAVE_TARGET_LOCALE)) {
diff --git a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
index c659f70..80a3d1f 100644
--- a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
+++ b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
@@ -16,22 +16,22 @@
 
 package com.android.settings.bluetooth;
 
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
 import android.app.AlertDialog;
 import android.bluetooth.BluetoothClass;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothProfile;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.graphics.drawable.Drawable;
+import android.os.UserManager;
 import android.preference.Preference;
 import android.text.Html;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.TypedValue;
-import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
-import android.view.ViewGroup;
 import android.widget.ImageView;
 
 import com.android.settings.R;
@@ -66,7 +66,10 @@
         mCachedDevice = cachedDevice;
 
         if (cachedDevice.getBondState() == BluetoothDevice.BOND_BONDED) {
-            setWidgetLayoutResource(R.layout.preference_bluetooth);
+            UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
+            if (! um.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)) {
+                setWidgetLayoutResource(R.layout.preference_bluetooth);
+            }
         }
 
         mCachedDevice.registerCallback(this);
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index c0bfd32..ab657e0 100755
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.bluetooth;
 
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
 import android.app.ActionBar;
 import android.app.Activity;
 import android.bluetooth.BluetoothAdapter;
@@ -25,6 +27,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
+import android.os.UserManager;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceCategory;
@@ -32,16 +35,13 @@
 import android.preference.PreferenceScreen;
 import android.util.Log;
 import android.view.Gravity;
-import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
-import android.view.ViewGroup;
 import android.widget.Switch;
 import android.widget.TextView;
 
-import com.android.settings.ProgressCategory;
 import com.android.settings.R;
 
 /**
@@ -74,6 +74,8 @@
 
     private final IntentFilter mIntentFilter;
 
+    private UserManager mUserManager;
+
     // accessed from inner class (not private to avoid thunks)
     Preference mMyDevicePreference;
 
@@ -100,6 +102,7 @@
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
+        mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
         mActivityStarted = (savedInstanceState == null);    // don't auto start scan after rotation
 
         mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
@@ -167,6 +170,9 @@
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         if (mLocalAdapter == null) return;
+        // If the user is not allowed to configure bluetooth, do not show the menu.
+        if (mUserManager.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)) return;
+
         boolean bluetoothIsEnabled = mLocalAdapter.getBluetoothState() == BluetoothAdapter.STATE_ON;
         boolean isDiscovering = mLocalAdapter.isDiscovering();
         int textId = isDiscovering ? R.string.bluetooth_searching_for_devices :
@@ -213,6 +219,7 @@
     }
 
     private void startScanning() {
+        if (mUserManager.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)) return;
         if (!mAvailableDevicesCategoryIsPresent) {
             getPreferenceScreen().addPreference(mAvailableDevicesCategory);
         }
@@ -259,12 +266,14 @@
                 mMyDevicePreference.setEnabled(true);
                 preferenceScreen.addPreference(mMyDevicePreference);
 
-                if (mDiscoverableEnabler == null) {
-                    mDiscoverableEnabler = new BluetoothDiscoverableEnabler(getActivity(),
-                            mLocalAdapter, mMyDevicePreference);
-                    mDiscoverableEnabler.resume();
-                    LocalBluetoothManager.getInstance(getActivity()).setDiscoverableEnabler(
-                            mDiscoverableEnabler);
+                if (! mUserManager.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)) {
+                    if (mDiscoverableEnabler == null) {
+                        mDiscoverableEnabler = new BluetoothDiscoverableEnabler(getActivity(),
+                                mLocalAdapter, mMyDevicePreference);
+                        mDiscoverableEnabler.resume();
+                        LocalBluetoothManager.getInstance(getActivity()).setDiscoverableEnabler(
+                                mDiscoverableEnabler);
+                    }
                 }
 
                 // Paired devices category
@@ -278,7 +287,9 @@
                         BluetoothDeviceFilter.BONDED_DEVICE_FILTER);
                 int numberOfPairedDevices = mPairedDevicesCategory.getPreferenceCount();
 
-                mDiscoverableEnabler.setNumberOfPairedDevices(numberOfPairedDevices);
+                if (mDiscoverableEnabler != null) {
+                    mDiscoverableEnabler.setNumberOfPairedDevices(numberOfPairedDevices);
+                }
 
                 // Available devices category
                 if (mAvailableDevicesCategory == null) {
@@ -286,9 +297,11 @@
                 } else {
                     mAvailableDevicesCategory.removeAll();
                 }
-                addDeviceCategory(mAvailableDevicesCategory,
-                        R.string.bluetooth_preference_found_devices,
-                        BluetoothDeviceFilter.UNBONDED_DEVICE_FILTER);
+                if (! mUserManager.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)) {
+                    addDeviceCategory(mAvailableDevicesCategory,
+                            R.string.bluetooth_preference_found_devices,
+                            BluetoothDeviceFilter.UNBONDED_DEVICE_FILTER);
+                }
                 int numberOfAvailableDevices = mAvailableDevicesCategory.getPreferenceCount();
                 mAvailableDevicesCategoryIsPresent = true;
 
@@ -353,6 +366,8 @@
         public void onClick(View v) {
             // User clicked on advanced options icon for a device in the list
             if (v.getTag() instanceof CachedBluetoothDevice) {
+                if (mUserManager.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)) return;
+
                 CachedBluetoothDevice device = (CachedBluetoothDevice) v.getTag();
 
                 Bundle args = new Bundle(1);
diff --git a/src/com/android/settings/bluetooth/DevicePickerFragment.java b/src/com/android/settings/bluetooth/DevicePickerFragment.java
index 87d31e7..027ceed 100644
--- a/src/com/android/settings/bluetooth/DevicePickerFragment.java
+++ b/src/com/android/settings/bluetooth/DevicePickerFragment.java
@@ -16,11 +16,15 @@
 
 package com.android.settings.bluetooth;
 
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothDevicePicker;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.UserManager;
 
 import com.android.settings.R;
 
@@ -51,7 +55,9 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         getActivity().setTitle(getString(R.string.device_picker));
-        mStartScanOnResume = (savedInstanceState == null);  // don't start scan after rotation
+        UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
+        mStartScanOnResume = !um.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)
+                && (savedInstanceState == null);  // don't start scan after rotation
     }
 
     @Override
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 1dcb02c..2a3d5f8 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -606,7 +606,7 @@
                 app.tcpBytesSent = tcpBytesSent;
                 if (u.getUid() == Process.WIFI_UID) {
                     mWifiSippers.add(app);
-                } else if (u.getUid() == Process.BLUETOOTH_GID) {
+                } else if (u.getUid() == Process.BLUETOOTH_UID) {
                     mBluetoothSippers.add(app);
                 } else if (userId != UserHandle.myUserId()
                         && UserHandle.getAppId(u.getUid()) >= Process.FIRST_APPLICATION_UID) {
@@ -627,7 +627,7 @@
             if (power != 0) {
                 if (u.getUid() == Process.WIFI_UID) {
                     mWifiPower += power;
-                } else if (u.getUid() == Process.BLUETOOTH_GID) {
+                } else if (u.getUid() == Process.BLUETOOTH_UID) {
                     mBluetoothPower += power;
                 } else if (isOtherUser) {
                     Double userPower = mUserPower.get(userId);
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index c2ff0d9..2a5adb1 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -238,7 +238,16 @@
                 // and want to pretend that the language is valid for all locales.
                 // We need a way to support languages that aren't tied to a particular
                 // locale instead of hiding the locale qualifier.
-                if (hasOnlyOneLanguageInstance(language,
+                if (language.equals("zz")) {
+                    String country = conf.locale.getCountry();
+                    if (country.equals("ZZ")) {
+                        localeString = "[Developer] Accented English (zz_ZZ)";
+                    } else if (country.equals("ZY")) {
+                        localeString = "[Developer] Fake Bi-Directional (zz_ZY)";
+                    } else {
+                        localeString = "";
+                    }
+                } else if (hasOnlyOneLanguageInstance(language,
                         Resources.getSystem().getAssets().getLocales())) {
                     localeString = conf.locale.getDisplayLanguage(conf.locale);
                 } else {
diff --git a/src/com/android/settings/users/AppRestrictionsFragment.java b/src/com/android/settings/users/AppRestrictionsFragment.java
index 90ebdae..6ea583e 100644
--- a/src/com/android/settings/users/AppRestrictionsFragment.java
+++ b/src/com/android/settings/users/AppRestrictionsFragment.java
@@ -16,12 +16,14 @@
 
 package com.android.settings.users;
 
+import android.app.AppGlobals;
 import android.appwidget.AppWidgetManager;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.RestrictionEntry;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
@@ -34,6 +36,7 @@
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Parcelable;
+import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.preference.CheckBoxPreference;
@@ -78,6 +81,8 @@
 
     private static final String TAG = AppRestrictionsFragment.class.getSimpleName();
 
+    private static final boolean DEBUG = false;
+
     private static final String PKG_PREFIX = "pkg_";
     private static final String KEY_USER_INFO = "user_info";
 
@@ -98,6 +103,20 @@
     private HashMap<Integer, AppRestrictionsPreference> mCustomRequestMap =
             new HashMap<Integer,AppRestrictionsPreference>();
 
+    static class SelectableAppInfo {
+        String packageName;
+        CharSequence appName;
+        CharSequence activityName;
+        Drawable icon;
+        SelectableAppInfo masterEntry;
+
+        @Override
+        public String toString() {
+            return packageName + ": appName=" + appName + "; activityName=" + activityName
+                    + "; icon=" + icon + "; masterEntry=" + masterEntry;
+        }
+    }
+
     public static class Activity extends PreferenceActivity {
         @Override
         public Intent getIntent() {
@@ -113,7 +132,7 @@
         private OnClickListener listener;
         private ArrayList<RestrictionEntry> restrictions;
         boolean panelOpen;
-        private boolean required;
+        private boolean immutable;
         List<Preference> childPreferences = new ArrayList<Preference>();
 
         AppRestrictionsPreference(Context context, OnClickListener listener) {
@@ -130,12 +149,12 @@
             this.restrictions = restrictions;
         }
 
-        void setRequired(boolean required) {
-            this.required = required;
+        void setImmutable(boolean immutable) {
+            this.immutable = immutable;
         }
 
-        boolean isRequired() {
-            return required;
+        boolean isImmutable() {
+            return immutable;
         }
 
         RestrictionEntry getRestriction(String key) {
@@ -168,10 +187,10 @@
             appRestrictionsPref.setTag(this);
 
             ViewGroup widget = (ViewGroup) view.findViewById(android.R.id.widget_frame);
-            widget.setEnabled(!isRequired());
+            widget.setEnabled(!isImmutable());
             if (widget.getChildCount() > 0) {
                 final Switch switchView = (Switch) widget.getChildAt(0);
-                switchView.setEnabled(!isRequired());
+                switchView.setEnabled(!isImmutable());
                 switchView.setTag(this);
                 switchView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                     @Override
@@ -219,7 +238,7 @@
         mUserPreference.setText(info.name);
     }
 
-    private void addSystemApps(List<ApplicationInfo> visibleApps, Intent intent) {
+    private void addSystemApps(List<SelectableAppInfo> visibleApps, Intent intent) {
         final PackageManager pm = getActivity().getPackageManager();
         List<ResolveInfo> launchableApps = pm.queryIntentActivities(intent, 0);
         for (ResolveInfo app : launchableApps) {
@@ -228,7 +247,13 @@
                 if ((flags & ApplicationInfo.FLAG_SYSTEM) != 0
                         || (flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
                     // System app
-                    visibleApps.add(app.activityInfo.applicationInfo);
+                    SelectableAppInfo info = new SelectableAppInfo();
+                    info.packageName = app.activityInfo.packageName;
+                    info.appName = app.activityInfo.applicationInfo.loadLabel(pm);
+                    info.icon = app.activityInfo.loadIcon(pm);
+                    info.activityName = app.activityInfo.loadLabel(pm);
+                    if (info.activityName == null) info.activityName = info.appName;
+                    visibleApps.add(info);
                 }
             }
         }
@@ -236,10 +261,11 @@
 
     private void populateApps() {
         mAppList.setOrderingAsAdded(false);
-        List<ApplicationInfo> visibleApps = new ArrayList<ApplicationInfo>();
+        List<SelectableAppInfo> visibleApps = new ArrayList<SelectableAppInfo>();
         // TODO: Do this asynchronously since it can be a long operation
         final Context context = getActivity();
         PackageManager pm = context.getPackageManager();
+        IPackageManager ipm = AppGlobals.getPackageManager();
 
         // Add launchers
         Intent launcherIntent = new Intent(Intent.ACTION_MAIN);
@@ -255,51 +281,103 @@
             if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 0
                     && (app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0) {
                 // Downloaded app
-                visibleApps.add(app);
+                SelectableAppInfo info = new SelectableAppInfo();
+                info.packageName = app.packageName;
+                info.appName = app.loadLabel(pm);
+                info.activityName = info.appName;
+                info.icon = app.loadIcon(pm);
+                visibleApps.add(info);
             }
         }
-        Collections.sort(visibleApps, new AppLabelComparator(pm));
 
+        // Now check apps that are installed on target user
+        List<ApplicationInfo> userApps = null;
+        try {
+            userApps = ipm.getInstalledApplications(
+                    0, mUser.getIdentifier()).getList();
+        } catch (RemoteException re) {
+        }
+
+        if (userApps != null) {
+            for (ApplicationInfo app : userApps) {
+                if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 0
+                        && (app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0) {
+                    // Downloaded app
+                    SelectableAppInfo info = new SelectableAppInfo();
+                    info.packageName = app.packageName;
+                    info.appName = app.loadLabel(pm);
+                    info.activityName = info.appName;
+                    info.icon = app.loadIcon(pm);
+                    visibleApps.add(info);
+                }
+            }
+        }
+        Collections.sort(visibleApps, new AppLabelComparator());
+
+        // Remove dupes
         for (int i = visibleApps.size() - 1; i > 1; i--) {
-            ApplicationInfo appInfo = visibleApps.get(i);
-            if (appInfo.packageName.equals(visibleApps.get(i-1).packageName)) {
+            SelectableAppInfo info = visibleApps.get(i);
+            if (DEBUG) Log.i(TAG, info.toString());
+            if (info.packageName.equals(visibleApps.get(i-1).packageName)
+                    && info.activityName.equals(visibleApps.get(i-1).activityName)) {
                 visibleApps.remove(i);
             }
         }
+
+        // Establish master/slave relationship for entries that share a package name
+        HashMap<String,SelectableAppInfo> packageMap = new HashMap<String,SelectableAppInfo>();
+        for (SelectableAppInfo info : visibleApps) {
+            if (packageMap.containsKey(info.packageName)) {
+                info.masterEntry = packageMap.get(info.packageName);
+            } else {
+                packageMap.put(info.packageName, info);
+            }
+        }
+
         Intent restrictionsIntent = new Intent(Intent.ACTION_GET_RESTRICTION_ENTRIES);
         final List<ResolveInfo> receivers = pm.queryBroadcastReceivers(restrictionsIntent, 0);
-        final List<ResolveInfo> existingApps = pm.queryIntentActivitiesAsUser(launcherIntent,
-                0, mUser.getIdentifier());
         int i = 0;
         if (visibleApps.size() > 0) {
-            for (ApplicationInfo app : visibleApps) {
-                if (app.packageName == null) continue;
+            for (SelectableAppInfo app : visibleApps) {
                 String packageName = app.packageName;
-                Drawable icon = app.loadIcon(pm);
-                CharSequence label = app.loadLabel(pm);
+                if (packageName == null) continue;
+                final boolean isSettingsApp = packageName.equals(getActivity().getPackageName());
                 AppRestrictionsPreference p = new AppRestrictionsPreference(context, this);
-                p.setIcon(icon);
-                p.setTitle(label);
+                final boolean hasSettings = resolveInfoListHasPackage(receivers, packageName);
+                p.setIcon(app.icon);
+                p.setTitle(app.activityName);
+                if (app.masterEntry != null) {
+                    p.setSummary(getActivity().getString(R.string.user_restrictions_controlled_by,
+                            app.masterEntry.activityName));
+                }
                 p.setKey(PKG_PREFIX + packageName);
-                p.setSettingsEnabled(hasPackage(receivers, packageName)
-                        || packageName.equals(getActivity().getPackageName()));
+                p.setSettingsEnabled(hasSettings || isSettingsApp);
                 p.setPersistent(false);
                 p.setOnPreferenceChangeListener(this);
                 p.setOnPreferenceClickListener(this);
+                PackageInfo pi = null;
                 try {
-                    PackageInfo pi = pm.getPackageInfo(packageName, 0);
-                    if (pi.requiredForAllUsers) {
-                        p.setChecked(true);
-                        p.setRequired(true);
-                    } else if (!mNewUser && hasPackage(existingApps, packageName)) {
-                        p.setChecked(true);
-                    }
+                    pi = pm.getPackageInfo(packageName, 0);
                 } catch (NameNotFoundException re) {
-                    // This would be bad
+                    try {
+                        pi = ipm.getPackageInfo(packageName, 0, mUser.getIdentifier());
+                    } catch (RemoteException e) {
+                    }
                 }
-
+                if (pi != null && pi.requiredForAllUsers) {
+                    p.setChecked(true);
+                    p.setImmutable(true);
+                    // If the app is required and has no restrictions, skip showing it
+                    if (!hasSettings && !isSettingsApp) continue;
+                } else if (!mNewUser && appInfoListHasPackage(userApps, packageName)) {
+                    p.setChecked(true);
+                }
+                if (app.masterEntry != null) {
+                    p.setImmutable(true);
+                    p.setChecked(mSelectedPackages.get(packageName));
+                }
                 mAppList.addPreference(p);
-                if (packageName.equals(getActivity().getPackageName())) {
+                if (isSettingsApp) {
                     p.setOrder(MAX_APP_RESTRICTIONS * 1);
                 } else {
                     p.setOrder(MAX_APP_RESTRICTIONS * (i + 2));
@@ -310,28 +388,17 @@
         }
     }
 
-    private class AppLabelComparator implements Comparator<ApplicationInfo> {
-
-        PackageManager pm;
-
-        private AppLabelComparator(PackageManager pm) {
-            this.pm = pm;
-        }
-
-        private CharSequence getLabel(ApplicationInfo info) {
-            // TODO: Optimize this with a cache
-            return info.loadLabel(pm);
-        }
+    private class AppLabelComparator implements Comparator<SelectableAppInfo> {
 
         @Override
-        public int compare(ApplicationInfo lhs, ApplicationInfo rhs) {
-            String lhsLabel = getLabel(lhs).toString();
-            String rhsLabel = getLabel(rhs).toString();
-            return lhsLabel.compareTo(rhsLabel);
+        public int compare(SelectableAppInfo lhs, SelectableAppInfo rhs) {
+            String lhsLabel = lhs.activityName.toString();
+            String rhsLabel = rhs.activityName.toString();
+            return lhsLabel.toLowerCase().compareTo(rhsLabel.toLowerCase());
         }
     }
 
-    private boolean hasPackage(List<ResolveInfo> receivers, String packageName) {
+    private boolean resolveInfoListHasPackage(List<ResolveInfo> receivers, String packageName) {
         for (ResolveInfo info : receivers) {
             if (info.activityInfo.packageName.equals(packageName)) {
                 return true;
@@ -340,16 +407,37 @@
         return false;
     }
 
+    private boolean appInfoListHasPackage(List<ApplicationInfo> apps, String packageName) {
+        for (ApplicationInfo info : apps) {
+            if (info.packageName.equals(packageName)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private void updateAllEntries(String prefKey, boolean checked) {
+        for (int i = 0; i < mAppList.getPreferenceCount(); i++) {
+            Preference pref = mAppList.getPreference(i);
+            if (pref instanceof AppRestrictionsPreference) {
+                if (prefKey.equals(pref.getKey())) {
+                    ((AppRestrictionsPreference) pref).setChecked(checked);
+                }
+            }
+        }
+    }
+
     @Override
     public void onClick(View v) {
         if (v.getTag() instanceof AppRestrictionsPreference) {
             AppRestrictionsPreference pref = (AppRestrictionsPreference) v.getTag();
             if (v.getId() == R.id.app_restrictions_settings) {
                 toggleAppPanel(pref);
-            } else if (!pref.isRequired()) {
+            } else if (!pref.isImmutable()) {
                 pref.setChecked(!pref.isChecked());
                 mSelectedPackages.put(pref.getKey().substring(PKG_PREFIX.length()),
                         pref.isChecked());
+                updateAllEntries(pref.getKey(), pref.isChecked());
             }
         }
     }
@@ -597,9 +685,10 @@
     public boolean onPreferenceClick(Preference preference) {
         if (preference.getKey().startsWith(PKG_PREFIX)) {
             AppRestrictionsPreference arp = (AppRestrictionsPreference) preference;
-            if (!arp.isRequired()) {
+            if (!arp.isImmutable()) {
                 arp.setChecked(!arp.isChecked());
                 mSelectedPackages.put(arp.getKey().substring(PKG_PREFIX.length()), arp.isChecked());
+                updateAllEntries(arp.getKey(), arp.isChecked());
             }
             return true;
         }
