Merge "Fix NPE for VVM Sync sms messages." into mnc-dev
diff --git a/sip/src/com/android/services/telephony/sip/SipAccountRegistry.java b/sip/src/com/android/services/telephony/sip/SipAccountRegistry.java
index 0a08c61..dd76c27 100644
--- a/sip/src/com/android/services/telephony/sip/SipAccountRegistry.java
+++ b/sip/src/com/android/services/telephony/sip/SipAccountRegistry.java
@@ -113,9 +113,30 @@
}
void setup(Context context) {
+ verifyAndPurgeInvalidPhoneAccounts(context);
startSipProfilesAsync(context, (String) null, false);
+ }
- // TODO: remove orphaned SIP Accounts
+ /**
+ * Checks the existing SIP phone {@link PhoneAccount}s registered with telecom and deletes any
+ * invalid accounts.
+ *
+ * @param context The context.
+ */
+ void verifyAndPurgeInvalidPhoneAccounts(Context context) {
+ TelecomManager telecomManager = TelecomManager.from(context);
+ SipProfileDb profileDb = new SipProfileDb(context);
+ List<PhoneAccountHandle> accountHandles = telecomManager.getPhoneAccountsSupportingScheme(
+ PhoneAccount.SCHEME_SIP);
+
+ for (PhoneAccountHandle accountHandle : accountHandles) {
+ String profileName = SipUtil.getSipProfileNameFromPhoneAccount(accountHandle);
+ SipProfile profile = profileDb.retrieveSipProfileFromName(profileName);
+ if (profile == null) {
+ log("verifyAndPurgeInvalidPhoneAccounts, deleting account: " + accountHandle);
+ telecomManager.unregisterPhoneAccount(accountHandle);
+ }
+ }
}
/**
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index 2c2e095..09f12ff 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -259,8 +259,9 @@
newMsg.getData().putBoolean("loaded_from_xml", true);
sendMessage(newMsg);
} else {
- if (bindToConfigPackage(carrierPackageName, phoneId,
- EVENT_CONNECTED_TO_CARRIER)) {
+ if (carrierPackageName != null
+ && bindToConfigPackage(carrierPackageName, phoneId,
+ EVENT_CONNECTED_TO_CARRIER)) {
sendMessageDelayed(obtainMessage(EVENT_BIND_CARRIER_TIMEOUT, phoneId, -1),
BIND_TIMEOUT_MILLIS);
} else {
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index ad9032f..cf928ae 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -992,7 +992,9 @@
R.string.preferred_network_mode_lte_cdma_evdo_summary);
break;
case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
- if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) {
+ if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA ||
+ mIsGlobalCdma ||
+ isWorldMode()) {
mButtonPreferredNetworkMode.setSummary(
R.string.preferred_network_mode_global_summary);
} else {
@@ -1092,7 +1094,9 @@
}
mButtonEnabledNetworks.setValue(
Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
- if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) {
+ if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA ||
+ mIsGlobalCdma ||
+ isWorldMode()) {
mButtonEnabledNetworks.setSummary(R.string.network_global);
} else {
mButtonEnabledNetworks.setSummary((mShow4GForLTE == true)
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 5848135..9c53898 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -186,7 +186,9 @@
// when voice RAT is OOS but Data RAT is present.
int state = phone.getServiceState().getState();
if (state == ServiceState.STATE_OUT_OF_SERVICE) {
- state = phone.getServiceState().getDataRegState();
+ if (phone.getServiceState().getDataNetworkType() == TelephonyManager.NETWORK_TYPE_LTE) {
+ state = phone.getServiceState().getDataRegState();
+ }
}
boolean useEmergencyCallHelper = false;