diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index d2ad51d..4d91c65 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -598,7 +598,7 @@
     <string name="wifi_signal" msgid="5514120261628065287">"Síla signálu"</string>
     <string name="wifi_status" msgid="4824568012414605414">"Stav"</string>
     <string name="wifi_speed" msgid="3526198708812322037">"Rychlost připojení"</string>
-    <string name="wifi_ip_address" msgid="1440054061044402918">"Adresa IP"</string>
+    <string name="wifi_ip_address" msgid="1440054061044402918">"IP adresa"</string>
     <string name="wifi_eap_method" msgid="8529436133640730382">"Metoda EAP"</string>
     <string name="please_select_phase2" msgid="5231074529772044898">"Ověření Phase 2"</string>
     <string name="wifi_eap_ca_cert" msgid="3521574865488892851">"Certifikát CA"</string>
@@ -643,7 +643,7 @@
     <string name="wifi_setting_frequency_band_summary" msgid="3250740757118009784">"Uveďte provozní frekvenční rozsah"</string>
     <string name="wifi_setting_frequency_band_error" msgid="837281974489794378">"Při nastavení frekvenčního pásma došlo k problému."</string>
     <string name="wifi_advanced_mac_address_title" msgid="6571335466330978393">"Adresa MAC"</string>
-    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"Adresa IP"</string>
+    <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP adresa"</string>
     <string name="wifi_advanced_settings_label" msgid="3654366894867838338">"Nastavení adresy IP"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Uložit"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Zrušit"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 4e6c508..24e2991 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -1607,7 +1607,7 @@
     <string name="background_data_summary" msgid="8328521479872763452">"Synchronisation, envoi et réception de données à tout moment"</string>
     <string name="background_data_dialog_title" msgid="6059217698124786537">"Dés. données arr.-plan ?"</string>
     <string name="background_data_dialog_message" msgid="6981661606680941633">"La désactivation des données en arrière-plan économise la batterie et réduit l\'utilisation des données. Certaines applications peuvent continuer d\'utiliser la connexion Internet en arrière-plan."</string>
-    <string name="sync_automatically" msgid="1682730255435062059">"Synchro auto des données des applis"</string>
+    <string name="sync_automatically" msgid="1682730255435062059">"Synchro auto"</string>
     <string name="sync_enabled" msgid="4551148952179416813">"Synchronisation activée"</string>
     <string name="sync_disabled" msgid="8511659877596511991">"Synchronisation désactivée"</string>
     <string name="sync_error" msgid="5060969083117872149">"Erreur de synchronisation"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 6a27f25..6014192 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -353,7 +353,7 @@
     <string name="unlock_set_unlock_off_summary" msgid="94361581669110415"></string>
     <string name="unlock_set_unlock_none_title" msgid="2871898266296656162">"הסט"</string>
     <string name="unlock_set_unlock_none_summary" msgid="8914673583104628191">"אין אבטחה"</string>
-    <string name="unlock_set_unlock_biometric_weak_title" msgid="2227215291604628670">"ביטול נעילת פרצוף"</string>
+    <string name="unlock_set_unlock_biometric_weak_title" msgid="2227215291604628670">"זיהוי פרצוף"</string>
     <string name="unlock_set_unlock_biometric_weak_summary" msgid="180083326982058964">"אבטחה נמוכה, ניסיוני"</string>
     <string name="unlock_set_unlock_pattern_title" msgid="2912067603917311700">"קו"</string>
     <string name="unlock_set_unlock_pattern_summary" msgid="7062696666227725593">"אבטחה בינונית"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index ec102bd..8bb0b0a 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -1709,7 +1709,7 @@
     <string name="show_all_anrs_summary" msgid="641908614413544127">"バックグラウンドアプリが応答しない場合に通知する"</string>
     <string name="experimental_webview" msgid="4492200819033780927">"試験運用版WebViewを使用"</string>
     <string name="experimental_webview_summary" msgid="3431620080869482446">"アプリは最新（ベータ版）のWebViewを使用します"</string>
-    <string name="data_usage_summary_title" msgid="3804110657238092929">"データ使用"</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>
     <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"バックグラウンドデータを制限する"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index f16fe7b..728a56b 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -1704,7 +1704,7 @@
     <string name="show_all_anrs_summary" msgid="641908614413544127">"Afiş. dialog. Aplic. nu răsp. pt. aplic. de fundal"</string>
     <string name="experimental_webview" msgid="4492200819033780927">"WebView experimental"</string>
     <string name="experimental_webview_summary" msgid="3431620080869482446">"Aplicațiile vor utiliza cel mai nou WebView (beta)"</string>
-    <string name="data_usage_summary_title" msgid="3804110657238092929">"Rata de utilizare a datelor"</string>
+    <string name="data_usage_summary_title" msgid="3804110657238092929">"Utilizarea datelor"</string>
     <string name="data_usage_cycle" msgid="5652529796195787949">"Ciclul de util. a datelor"</string>
     <string name="data_usage_menu_roaming" msgid="8042359966835203296">"Roaming de date"</string>
     <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Restricţionaţi datele de fundal"</string>
@@ -1712,7 +1712,7 @@
     <string name="data_usage_menu_show_wifi" msgid="5056401102877964564">"Afișați utilizarea Wi-Fi"</string>
     <string name="data_usage_menu_show_ethernet" msgid="5181361208532314097">"Afişaţi utiliz. conex. Ethernet"</string>
     <string name="data_usage_menu_metered" msgid="5056695223222541863">"Hotspoturi mobile"</string>
-    <string name="data_usage_menu_auto_sync" msgid="8203999775948778560">"Sincronizaţi datele în mod automat"</string>
+    <string name="data_usage_menu_auto_sync" msgid="8203999775948778560">"Sincronizați automat datele"</string>
     <string name="data_usage_change_cycle" msgid="7776556448920114866">"Schimbaţi data ciclului..."</string>
     <string name="data_usage_pick_cycle_day" msgid="4470796861757050966">"Ziua din lună pentru resetarea ciclului de utilizare a datelor:"</string>
     <string name="data_usage_empty" msgid="8621855507876539282">"Nicio aplic. nu a utilizat date în ac. perioadă."</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6d181b5..091c6b3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2623,7 +2623,8 @@
         <li>Disabled apps</li>\n
         <li>Disabled app notifications</li>\n
         <li>Default applications for actions</li>\n
-        <li>Background data restrictions for apps</li>\n\n
+        <li>Background data restrictions for apps</li>\n
+        <li>Any permission restrictions</li>\n\n
         You will not lose any app data.</string>
     <!-- [CHAR LIMIT=25] Manage applications screen, menu item.  Confirmation button of dialog to confirm resetting user's app preferences. -->
     <string name="reset_app_preferences_button">Reset apps</string>
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index f4a48ef..8124b3b 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -45,7 +45,7 @@
 import com.android.settings.NsdEnabler;
 
 public class WirelessSettings extends SettingsPreferenceFragment {
-    private static final String TAG = "WirelessSettiings";
+    private static final String TAG = "WirelessSettings";
 
     private static final String KEY_TOGGLE_AIRPLANE = "toggle_airplane";
     private static final String KEY_TOGGLE_NFC = "toggle_nfc";
@@ -106,7 +106,7 @@
         NetworkInfo ni = mCm.getActiveNetworkInfo();
         if (mTm.hasIccCard() && (ni != null)) {
             // Get provisioning URL
-            String url = getProvisioningUrl();
+            String url = mCm.getMobileProvisioningUrl();
             if (!TextUtils.isEmpty(url)) {
                 // Send user to provisioning webpage
                 Intent intent = new Intent(Intent.ACTION_VIEW);
@@ -145,26 +145,6 @@
         }
     }
 
-    private String getProvisioningUrl() {
-        String url = getActivity().getResources()
-                .getString(com.android.internal.R.string.mobile_provisioning_url);
-        log("getProvisioningUrl: mobile_provisioning_url=" + url);
-
-        // populate the iccid, imei and phone number in the provisioning url.
-        if (!TextUtils.isEmpty(url)) {
-            String phoneNumber = mTm.getLine1Number();
-            if (TextUtils.isEmpty(phoneNumber)) {
-                phoneNumber = "0000000000";
-            }
-            url = String.format(url,
-                    mTm.getSimSerialNumber() /* ICCID */,
-                    mTm.getDeviceId() /* IMEI */,
-                    phoneNumber /* Phone number */);
-        }
-
-        return url;
-    }
-
     @Override
     public Dialog onCreateDialog(int dialogId) {
         log("onCreateDialog: dialogId=" + dialogId);
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index 7ec01aa..d37688c 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -22,6 +22,7 @@
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.AlertDialog;
+import android.app.AppOpsManager;
 import android.app.Fragment;
 import android.app.INotificationManager;
 import android.content.ComponentName;
@@ -1116,10 +1117,12 @@
         if (mResetDialog == dialog) {
             final PackageManager pm = getActivity().getPackageManager();
             final IPackageManager mIPm = IPackageManager.Stub.asInterface(
-                            ServiceManager.getService("package"));
+                    ServiceManager.getService("package"));
             final INotificationManager nm = INotificationManager.Stub.asInterface(
                     ServiceManager.getService(Context.NOTIFICATION_SERVICE));
             final NetworkPolicyManager npm = NetworkPolicyManager.from(getActivity());
+            final AppOpsManager aom = (AppOpsManager)getActivity().getSystemService(
+                    Context.APP_OPS_SERVICE);
             final Handler handler = new Handler(getActivity().getMainLooper());
             (new AsyncTask<Void, Void, Void>() {
                 @Override protected Void doInBackground(Void... params) {
@@ -1146,6 +1149,7 @@
                         mIPm.resetPreferredActivities(UserHandle.myUserId());
                     } catch (RemoteException e) {
                     }
+                    aom.resetAllModes();
                     final int[] restrictedUids = npm.getUidsWithPolicy(
                             POLICY_REJECT_METERED_BACKGROUND);
                     final int currentUserId = ActivityManager.getCurrentUser();
