Merge "Send SMS over 1x when on eHRPD/LTE and active voice call" into lmp-dev
diff --git a/src/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java b/src/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
index 0e1a30f..cf5ad10 100755
--- a/src/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
+++ b/src/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java
@@ -41,6 +41,8 @@
import com.android.internal.telephony.SmsUsageMonitor;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.telephony.cdma.sms.UserData;
+import com.android.internal.telephony.PhoneConstants;
+import android.telephony.TelephonyManager;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -260,11 +262,19 @@
Message reply = obtainMessage(EVENT_SEND_SMS_COMPLETE, tracker);
byte[] pdu = (byte[]) tracker.mData.get("pdu");
+ int currentDataNetwork = mPhone.getServiceState().getDataNetworkType();
+ boolean imsSmsDisabled = (currentDataNetwork == TelephonyManager.NETWORK_TYPE_EHRPD
+ || (currentDataNetwork == TelephonyManager.NETWORK_TYPE_LTE
+ && !mPhone.getServiceStateTracker().isConcurrentVoiceAndDataAllowed()))
+ && mPhone.getServiceState().getVoiceNetworkType()
+ == TelephonyManager.NETWORK_TYPE_1xRTT
+ && mPhone.getState() != PhoneConstants.State.IDLE;
+
// sms over cdma is used:
// if sms over IMS is not supported AND
// this is not a retry case after sms over IMS failed
// indicated by mImsRetry > 0
- if (0 == tracker.mImsRetry && !isIms()) {
+ if (0 == tracker.mImsRetry && !isIms() || imsSmsDisabled) {
mCi.sendCdmaSms(pdu, reply);
} else {
mCi.sendImsCdmaSms(pdu, tracker.mImsRetry, tracker.mMessageRef, reply);