Change to not broadcast emergency call state changes on wifi call.
Bug: 30348902
Change-Id: I27811ed2d4f26785352f97890d0b6f2a6491880d
diff --git a/src/java/com/android/internal/telephony/GsmCdmaPhone.java b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
index 09df6ad..1392302 100644
--- a/src/java/com/android/internal/telephony/GsmCdmaPhone.java
+++ b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
@@ -185,6 +185,8 @@
private int mRilVersion;
private boolean mBroadcastEmergencyCallStateChanges = false;
+ // flag to indicate if emergency call end broadcast should be sent
+ boolean mSendEmergencyCallEnd = true;
// Constructors
@@ -637,11 +639,24 @@
@Override
public void sendEmergencyCallStateChange(boolean callActive) {
if (mBroadcastEmergencyCallStateChanges) {
- Intent intent = new Intent(TelephonyIntents.ACTION_EMERGENCY_CALL_STATE_CHANGED);
- intent.putExtra(PhoneConstants.PHONE_IN_EMERGENCY_CALL, callActive);
- SubscriptionManager.putPhoneIdAndSubIdExtra(intent, getPhoneId());
- ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL);
- if (DBG) Rlog.d(LOG_TAG, "sendEmergencyCallStateChange");
+ if (callActive &&
+ getServiceState().getRilDataRadioTechnology() == ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN) {
+ // if emergency call is started while on iwlan, do not send the start or end
+ // broadcast
+ mSendEmergencyCallEnd = false;
+ if (DBG) Rlog.d(LOG_TAG, "sendEmergencyCallStateChange: not sending call start " +
+ "intent as voice tech is IWLAN");
+ } else if (callActive || mSendEmergencyCallEnd) {
+ Intent intent = new Intent(TelephonyIntents.ACTION_EMERGENCY_CALL_STATE_CHANGED);
+ intent.putExtra(PhoneConstants.PHONE_IN_EMERGENCY_CALL, callActive);
+ SubscriptionManager.putPhoneIdAndSubIdExtra(intent, getPhoneId());
+ ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL);
+ if (DBG) Rlog.d(LOG_TAG, "sendEmergencyCallStateChange");
+ } else {
+ if (DBG) Rlog.d(LOG_TAG, "sendEmergencyCallStateChange: not sending call end " +
+ "intent as start was not sent");
+ mSendEmergencyCallEnd = true;
+ }
}
}
@@ -2069,7 +2084,8 @@
if (b != null) {
boolean broadcastEmergencyCallStateChanges = b.getBoolean(
CarrierConfigManager.KEY_BROADCAST_EMERGENCY_CALL_STATE_CHANGES_BOOL);
- logd("broadcastEmergencyCallStateChanges =" + broadcastEmergencyCallStateChanges);
+ logd("broadcastEmergencyCallStateChanges = " +
+ broadcastEmergencyCallStateChanges);
setBroadcastEmergencyCallStateChanges(broadcastEmergencyCallStateChanges);
} else {
loge("didn't get broadcastEmergencyCallStateChanges from carrier config");