diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 3052a06..9a74a14 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -139,7 +139,7 @@
     <string name="vm_changed" msgid="380744030726254139">"ボイスメールの番号が変更されました。"</string>
     <string name="vm_change_failed" msgid="3352934863246208918">"ボイスメール番号を変更できませんでした。\nこの問題が続くようであれば携帯通信会社にお問い合わせください。"</string>
     <string name="fw_change_failed" msgid="5298103228470214665">"転送番号を変更できませんでした。\nこの問題が続くようであれば携帯通信会社にお問い合わせください。"</string>
-    <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"現在の転送先番号設定の取得と保存ができませんでした。\n別の携帯通信会社に切り替えますか？"</string>
+    <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"現在の転送先番号設定の取得と保存ができませんでした。\nかまわず新しい携帯通信会社に切り替えますか？"</string>
     <string name="no_change" msgid="3186040086622435212">"変更されていません。"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"ボイスメールサービスを選択"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"携帯通信会社"</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 964c89a..bd1be54 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -269,9 +269,9 @@
     <string name="enable_disable_local_weather" msgid="986967454867219114">"ಸ್ಥಳೀಯ ಹವಾಮಾನ"</string>
     <string name="local_weather_enable" msgid="6199315114382448922">"ಸ್ಥಳೀಯ ಹವಾಮಾನ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="local_weather_disable" msgid="2510158089142626480">"ಸ್ಥಳೀಯ ಹವಾಮಾನ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
-    <string name="enable_disable_atr" msgid="8339572391278872343">"ಪ್ರದೇಶ ದಟ್ಟಣೆ ವರದಿಗಳು"</string>
-    <string name="atr_enable" msgid="5541757457789181799">"ಪ್ರದೇಶ ದಟ್ಟಣೆ ವರದಿಗಳು ಸಕ್ರಿಯಗೊಂಡಿವೆ"</string>
-    <string name="atr_disable" msgid="7085558154727596455">"ಪ್ರದೇಶ ದಟ್ಟಣೆ ವರದಿಗಳು ನಿಷ್ಕ್ರಿಯಗೊಂಡಿವೆ"</string>
+    <string name="enable_disable_atr" msgid="8339572391278872343">"ಪ್ರದೇಶ ಟ್ರಾಫಿಕ್‌ ವರದಿಗಳು"</string>
+    <string name="atr_enable" msgid="5541757457789181799">"ಪ್ರದೇಶ ಟ್ರಾಫಿಕ್‌ ವರದಿಗಳು ಸಕ್ರಿಯಗೊಂಡಿವೆ"</string>
+    <string name="atr_disable" msgid="7085558154727596455">"ಪ್ರದೇಶ ಟ್ರಾಫಿಕ್‌ ವರದಿಗಳು ನಿಷ್ಕ್ರಿಯಗೊಂಡಿವೆ"</string>
     <string name="enable_disable_lafs" msgid="668189073721277199">"ಸ್ಥಳೀಯ ವಿಮಾನ ನಿಲ್ದಾಣ ಹಾರಾಟದ ವೇಳಾಪಟ್ಟಿ"</string>
     <string name="lafs_enable" msgid="2791978667205137052">"ಸ್ಥಳೀಯ ವಿಮಾನ ನಿಲ್ದಾಣದ ಹಾರಾಟ ವೇಳಾಪಟ್ಟಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="lafs_disable" msgid="2391212397725495350">"ಸ್ಥಳೀಯ ವಿಮಾನ ನಿಲ್ದಾಣದ ಹಾರಾಟ ವೇಳಾಪಟ್ಟಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index d506bd1..5abee72 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -70,7 +70,7 @@
     <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"അക്കൗണ്ട് ക്രമീകരണങ്ങൾ കോൺഫിഗർചെയ്യുക"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"എല്ലാ കോളിംഗ് അക്കൗണ്ടുകളും"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"ഫോൺ വിളിക്കാനാകുന്ന അക്കൗണ്ടുകൾ തിരഞ്ഞെടുക്കുക"</string>
-    <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi കോളിംഗ്"</string>
+    <string name="wifi_calling" msgid="739018212480165598">"വൈഫൈ കോളിംഗ്"</string>
     <string name="connection_service_default_label" msgid="1498481943805913754">"അന്തർ നിർമ്മിത കണക്ഷൻ സേവനം"</string>
     <string name="voicemail" msgid="8693759337917898954">"വോയ്സ് മെയില്‍"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"ശബ്ദമെയിൽ(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -480,7 +480,7 @@
     <string name="ota_hfa_activation_title" msgid="2234246934160473981">"സജീവമാക്കുന്നു..."</string>
     <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"ഫോൺ നിങ്ങളുടെ മൊബൈൽ ഡാറ്റ സേവനം സജീവമാക്കുന്നു.\n\nഇതിന് 5 മിനിറ്റ് വരെയെടുക്കാം."</string>
     <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"സജീവമാക്കൽ ഒഴിവാക്കണോ?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"നിങ്ങൾ സജീവമാക്കൽ ഒഴിവാക്കുകയാണെങ്കിൽ, നിങ്ങൾക്ക് കോളുകൾ വിളിക്കാനോ മൊബൈൽ ഡാറ്റ നെറ്റ്‌വർക്കുകളിൽ കണക്റ്റുചെയ്യാനോ കഴിയില്ല (എങ്കിലും നിങ്ങൾക്ക് Wi-Fi നെറ്റ്‌വർക്കുകളിൽ കണക്റ്റുചെയ്യാം). നിങ്ങളുടെ ഫോൺ സജീവമാക്കുന്നതുവരെ, അത് ഓൺ ചെയ്യുമ്പോഴെല്ലാം സജീവമാക്കാൻ നിങ്ങളോട് ആവശ്യപ്പെടും."</string>
+    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"നിങ്ങൾ സജീവമാക്കൽ ഒഴിവാക്കുകയാണെങ്കിൽ, നിങ്ങൾക്ക് കോളുകൾ വിളിക്കാനോ മൊബൈൽ ഡാറ്റ നെറ്റ്‌വർക്കുകളിൽ കണക്റ്റുചെയ്യാനോ കഴിയില്ല (എങ്കിലും നിങ്ങൾക്ക് വൈഫൈ നെറ്റ്‌വർക്കുകളിൽ കണക്റ്റുചെയ്യാം). നിങ്ങളുടെ ഫോൺ സജീവമാക്കുന്നതുവരെ, അത് ഓൺ ചെയ്യുമ്പോഴെല്ലാം സജീവമാക്കാൻ നിങ്ങളോട് ആവശ്യപ്പെടും."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"ഒഴിവാക്കുക"</string>
     <string name="ota_activate" msgid="1368528132525626264">"സജീവമാക്കുക"</string>
     <string name="ota_title_activate_success" msgid="6570240212263372046">"ഫോൺ സജീവമാക്കി."</string>
@@ -540,8 +540,8 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"അടിയന്തിര കോൾചെയ്യൽ മാത്രം"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM കാർഡ്, സ്ലോട്ട്: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"പ്രവേശനക്ഷമത"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ഇൻകമിംഗ് Wi-Fi കോൾ"</string>
-    <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi കോൾ"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ഇൻകമിംഗ് വൈഫൈ കോൾ"</string>
+    <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"വൈഫൈ കോൾ"</string>
     <string name="emergency_action_launch_hint" msgid="5841511849007540970">"തുറക്കുന്നതിന് വീണ്ടും സ്‌പർശിക്കുക"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"സന്ദേശം ഡീകോഡുചെയ്യുമ്പോൾ ഒരു പിശകുണ്ടായി."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"ഒരു SIM കാർഡ് നിങ്ങളുടെ സേവനം സജീവമാക്കി, ഫോണിന്റെ റോമിംഗ് ശേഷികൾ അപ്‌ഡേറ്റ് ചെയ്തു."</string>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index cc9cd02..a72b176 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -326,19 +326,19 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"Aktivizo"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"Konfiguro shërbimin e të dhënave"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"Cilësimet e operatorit"</string>
-    <string name="fdn" msgid="7878832555095183202">"Numrat e telefonave fiks"</string>
-    <string name="fdn_with_label" msgid="187084204115493366">"Numrat e telefonave fiks (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn" msgid="7878832555095183202">"Numrat me telefonim të përzgjedhur"</string>
+    <string name="fdn_with_label" msgid="187084204115493366">"Numrat me telefonim të përzgjedhur (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"Lista e FDN-ve"</string>
-    <string name="fdn_list_with_label" msgid="7437232552210469217">"Lista e FDN-ve (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="fdn_activation" msgid="2156479741307463576">"Aktivizimi FDN"</string>
-    <string name="fdn_enabled" msgid="5238109009915521240">"Numrat e telefonave fiks u aktivizuan"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"Numrat e telefonave fiks u çaktivizuan"</string>
+    <string name="fdn_list_with_label" msgid="7437232552210469217">"Lista e FDN-së (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn_activation" msgid="2156479741307463576">"Aktivizimi i FDN-së"</string>
+    <string name="fdn_enabled" msgid="5238109009915521240">"Numrat me telefonim të përzgjedhur u aktivizuan"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Numrat me telefonim të përzgjedhur u çaktivizuan"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"Aktivizo FDN-në"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Çaktivizo FDN-në"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Ndrysho PIN2-shin"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"Çaktivizo FDN-në"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"Aktivizo FDN-në"</string>
-    <string name="sum_fdn" msgid="1959399454900272878">"Menaxho numrat e telefonave fiks"</string>
+    <string name="sum_fdn" msgid="1959399454900272878">"Menaxho numrat me telefonim të përzgjedhur"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Ndrysho PIN-in për qasje te FDN-ja"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Menaxho listën e numrave të telefonit"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Privatësia e zërit"</string>
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index d6216c5..8273e1e 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -1799,13 +1799,19 @@
     }
 
     /**
-     * Returns the data network type
+     * Returns the data network type.
+     * Legacy call, permission-free.
      *
      * @Deprecated to be removed Q3 2013 use {@link #getDataNetworkType}.
      */
     @Override
-    public int getNetworkType(String callingPackage) {
-        return getNetworkTypeForSubscriber(getDefaultSubscription(), callingPackage);
+    public int getNetworkType() {
+        final Phone phone = getPhone(getDefaultSubscription());
+        if (phone != null) {
+            return phone.getServiceState().getDataNetworkType();
+        } else {
+            return TelephonyManager.NETWORK_TYPE_UNKNOWN;
+        }
     }
 
     /**
@@ -1816,6 +1822,7 @@
         if (!canReadPhoneState(callingPackage, "getNetworkTypeForSubscriber")) {
             return TelephonyManager.NETWORK_TYPE_UNKNOWN;
         }
+
         final Phone phone = getPhone(subId);
         if (phone != null) {
             return phone.getServiceState().getDataNetworkType();
@@ -1850,18 +1857,14 @@
     }
 
     /**
-     * Returns the data network type
-     */
-    @Override
-    public int getVoiceNetworkType() {
-        return getVoiceNetworkTypeForSubscriber(getDefaultSubscription());
-    }
-
-    /**
      * Returns the Voice network type for a subId
      */
     @Override
-    public int getVoiceNetworkTypeForSubscriber(int subId) {
+    public int getVoiceNetworkTypeForSubscriber(int subId, String callingPackage) {
+        if (!canReadPhoneState(callingPackage, "getDataNetworkTypeForSubscriber")) {
+            return TelephonyManager.NETWORK_TYPE_UNKNOWN;
+        }
+
         final Phone phone = getPhone(subId);
         if (phone != null) {
             return phone.getServiceState().getVoiceNetworkType();
@@ -2710,10 +2713,10 @@
 
     private boolean canReadPhoneState(String callingPackage, String message) {
         try {
-            mApp.enforceCallingOrSelfPermission(
+            mApp.enforceCallingPermission(
                     android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, message);
 
-            // SKIP checking for run-time permission since self or obtained PRIVILEDGED
+            // SKIP checking for run-time permission since obtained PRIVILEDGED
             return true;
         } catch (SecurityException e) {
             mApp.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PHONE_STATE,
diff --git a/src/com/android/phone/vvm/omtp/sync/VvmPhoneStateListener.java b/src/com/android/phone/VvmPhoneStateListener.java
similarity index 70%
rename from src/com/android/phone/vvm/omtp/sync/VvmPhoneStateListener.java
rename to src/com/android/phone/VvmPhoneStateListener.java
index 84449d7..d2d84b2 100644
--- a/src/com/android/phone/vvm/omtp/sync/VvmPhoneStateListener.java
+++ b/src/com/android/phone/VvmPhoneStateListener.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License
  */
-package com.android.phone.vvm.omtp.sync;
+package com.android.phone;
 
 import android.content.Context;
 import android.content.Intent;
@@ -22,8 +22,10 @@
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
 
-import com.android.phone.PhoneUtils;
 import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
+import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
+import com.android.phone.vvm.omtp.sync.OmtpVvmSyncService;
+import com.android.phone.vvm.omtp.sync.VoicemailStatusQueryHelper;
 
 /**
  * Check if service is lost and indicate this in the voicemail status.
@@ -49,15 +51,22 @@
                             VoicemailContract.Status.CONFIGURATION_STATE_OK,
                             VoicemailContract.Status.DATA_CHANNEL_STATE_OK,
                             VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK);
-                    // Run a full sync in case something was missed while signal was down.
-                    Intent serviceIntent = OmtpVvmSyncService.getSyncIntent(
-                            mContext, OmtpVvmSyncService.SYNC_FULL_SYNC, mPhoneAccount,
-                            true /* firstAttempt */);
-                    mContext.startService(serviceIntent);
+                    PhoneGlobals.getInstance().notificationMgr.updateMwi(
+                            PhoneUtils.getSubIdForPhoneAccountHandle(mPhoneAccount), false);
                 }
             }
 
-            if (!OmtpVvmSourceManager.getInstance(mContext).isVvmSourceRegistered(mPhoneAccount)) {
+            if (OmtpVvmSourceManager.getInstance(mContext).isVvmSourceRegistered(mPhoneAccount)) {
+                // If the source is already registered, run a full sync in case something was missed
+                // while signal was down.
+                Intent serviceIntent = OmtpVvmSyncService.getSyncIntent(
+                        mContext, OmtpVvmSyncService.SYNC_FULL_SYNC, mPhoneAccount,
+                        true /* firstAttempt */);
+                mContext.startService(serviceIntent);
+            } else {
+                // Otherwise initiate an activation because this means that an OMTP source was
+                // recognized but either the activation text was not successfully sent or a response
+                // was not received.
                 OmtpVvmCarrierConfigHelper carrierConfigHelper = new OmtpVvmCarrierConfigHelper(
                         mContext, PhoneUtils.getSubIdForPhoneAccountHandle(mPhoneAccount));
                 carrierConfigHelper.startActivation();
diff --git a/src/com/android/phone/settings/VoicemailSettingsActivity.java b/src/com/android/phone/settings/VoicemailSettingsActivity.java
index fdc5bf3..bb8c6fe 100644
--- a/src/com/android/phone/settings/VoicemailSettingsActivity.java
+++ b/src/com/android/phone/settings/VoicemailSettingsActivity.java
@@ -392,6 +392,7 @@
             boolean isEnabled = (Boolean) objValue;
             VisualVoicemailSettingsUtil.setVisualVoicemailEnabled(mPhone, isEnabled, true);
             if (isEnabled) {
+                OmtpVvmSourceManager.getInstance(mPhone.getContext()).addPhoneStateListener(mPhone);
                 mOmtpVvmCarrierConfigHelper.startActivation();
             } else {
                 OmtpVvmSourceManager.getInstance(mPhone.getContext()).removeSource(mPhone);
diff --git a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java b/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java
index 63e9fee..286dde3 100644
--- a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java
+++ b/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java
@@ -24,6 +24,7 @@
 
 import com.android.internal.telephony.Phone;
 import com.android.phone.PhoneUtils;
+import com.android.phone.VvmPhoneStateListener;
 
 import java.util.HashMap;
 import java.util.HashSet;
@@ -104,6 +105,10 @@
         OmtpVvmSyncService.cancelAllRetries(mContext, phoneAccount);
     }
 
+    public void addPhoneStateListener(Phone phone) {
+        addPhoneStateListener(PhoneUtils.makePstnPhoneAccountHandle(phone));
+    }
+
     public void addPhoneStateListener(PhoneAccountHandle phoneAccount) {
         if (!mPhoneStateListenerMap.containsKey(phoneAccount)) {
             VvmPhoneStateListener phoneStateListener = new VvmPhoneStateListener(mContext,
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 421fbda..cbe7c0a 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -67,14 +67,21 @@
                     AsyncResult ar = (AsyncResult) msg.obj;
                     com.android.internal.telephony.Connection connection =
                          (com.android.internal.telephony.Connection) ar.result;
-                    if ((connection.getAddress() != null &&
-                                    mOriginalConnection.getAddress() != null &&
+                    if (mOriginalConnection != null) {
+                        if (connection != null &&
+                            ((connection.getAddress() != null &&
+                            mOriginalConnection.getAddress() != null &&
                             mOriginalConnection.getAddress().contains(connection.getAddress())) ||
-                            connection.getStateBeforeHandover() == mOriginalConnection.getState()) {
-                        Log.d(TelephonyConnection.this, "SettingOriginalConnection " +
-                                mOriginalConnection.toString() + " with " + connection.toString());
-                        setOriginalConnection(connection);
-                        mWasImsConnection = false;
+                            connection.getStateBeforeHandover() == mOriginalConnection.getState())) {
+                            Log.d(TelephonyConnection.this,
+                                    "SettingOriginalConnection " + mOriginalConnection.toString()
+                                            + " with " + connection.toString());
+                            setOriginalConnection(connection);
+                            mWasImsConnection = false;
+                        }
+                    } else {
+                        Log.w(TelephonyConnection.this,
+                                "MSG_HANDOVER_STATE_CHANGED: mOriginalConnection==null - invalid state (not cleaned up)");
                     }
                     break;
                 case MSG_RINGBACK_TONE:
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 72c9b07..5848135 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -171,7 +171,7 @@
             }
         }
 
-        boolean isEmergencyNumber = PhoneNumberUtils.isPotentialEmergencyNumber(number);
+        boolean isEmergencyNumber = PhoneNumberUtils.isLocalEmergencyNumber(this, number);
 
         // Get the right phone object from the account data passed in.
         final Phone phone = getPhoneForAccount(request.getAccountHandle(), isEmergencyNumber);
