Fix emergency callback number not shown for incoming calls.
- In CallCardPresenter#setCallbackNumber() check for the case where a call
has CAPABILITY_SHOW_CALLBACK_NUMBER. Use this to trigger showing the
Emergency Callback Number (the ECM is only shown on outgoing calls if the
user has a dark number).
Bug: 18689292
Change-Id: I94391e3be3360982742ce961272b680d0eaa32a5
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 3944bf6..0464edf 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -335,9 +335,15 @@
private void setCallbackNumber() {
String callbackNumber = null;
+ // Show the emergency callback number if either:
+ // 1. This is an emergency call.
+ // 2. The phone is in Emergency Callback Mode, which means we should show the callback
+ // number.
boolean isEmergencyCall = PhoneNumberUtils.isEmergencyNumber(
getNumberFromHandle(mPrimary.getHandle()));
- if (isEmergencyCall) {
+ boolean showCallbackNumber = mPrimary.can(Details.CAPABILITY_SHOW_CALLBACK_NUMBER);
+
+ if (isEmergencyCall || showCallbackNumber) {
callbackNumber = getSubscriptionNumber();
} else {
StatusHints statusHints = mPrimary.getTelecommCall().getDetails().getStatusHints();
@@ -351,12 +357,13 @@
TelecomManager mgr = InCallPresenter.getInstance().getTelecomManager();
String simNumber = mgr.getLine1Number(mPrimary.getAccountHandle());
- if (PhoneNumberUtils.compare(callbackNumber, simNumber)) {
- Log.d(this, "Numbers are the same; not showing the callback number");
+ if (!showCallbackNumber && PhoneNumberUtils.compare(callbackNumber, simNumber)) {
+ Log.d(this, "Numbers are the same (and callback number is not being forced to show);" +
+ " not showing the callback number");
callbackNumber = null;
}
- getUi().setCallbackNumber(callbackNumber, isEmergencyCall);
+ getUi().setCallbackNumber(callbackNumber, isEmergencyCall || showCallbackNumber);
}
public void updateCallTime() {