Updated call number by NW is not displayed
CallCardPresenter updates a call number if the number is updated by NW.
But the logic is worng. The comparing numbers are always same. Because
it compares with the same objects in DialerCall#areSameNumber.
This is a upstream change from:
https://android-review.googlesource.com/c/platform/packages/apps/Dialer/+/556000
originating number is shown in the call screen.
Bug: 70201489
Test: manual - Verified that a call number that changed from a
PiperOrigin-RevId: 183022988
Change-Id: I04305998e77ca120b1248636c63984b3d20f0db1
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index eed076d..bdbbe8f 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -117,7 +117,9 @@
private final Handler handler = new Handler();
private DialerCall primary;
+ private String primaryNumber;
private DialerCall secondary;
+ private String secondaryNumber;
private ContactCacheEntry primaryContactInfo;
private ContactCacheEntry secondaryContactInfo;
@Nullable private ContactsPreferences contactsPreferences;
@@ -284,17 +286,27 @@
LogUtil.v("CallCardPresenter.onStateChange", "primary call: " + primary);
LogUtil.v("CallCardPresenter.onStateChange", "secondary call: " + secondary);
+ String primaryNumber = null;
+ String secondaryNumber = null;
+ if (primary != null) {
+ primaryNumber = primary.getNumber();
+ }
+ if (secondary != null) {
+ secondaryNumber = secondary.getNumber();
+ }
final boolean primaryChanged =
!(DialerCall.areSame(this.primary, primary)
- && DialerCall.areSameNumber(this.primary, primary));
+ && TextUtils.equals(this.primaryNumber, primaryNumber));
final boolean secondaryChanged =
!(DialerCall.areSame(this.secondary, secondary)
- && DialerCall.areSameNumber(this.secondary, secondary));
+ && TextUtils.equals(this.secondaryNumber, secondaryNumber));
this.secondary = secondary;
+ this.secondaryNumber = secondaryNumber;
DialerCall previousPrimary = this.primary;
this.primary = primary;
+ this.primaryNumber = primaryNumber;
if (this.primary != null) {
InCallPresenter.getInstance().onForegroundCallChanged(this.primary);