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);
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index a30367f..e581ba3 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -394,17 +394,6 @@
     return call1.getId().equals(call2.getId());
   }
 
-  public static boolean areSameNumber(DialerCall call1, DialerCall call2) {
-    if (call1 == null && call2 == null) {
-      return true;
-    } else if (call1 == null || call2 == null) {
-      return false;
-    }
-
-    // otherwise compare call Numbers
-    return TextUtils.equals(call1.getNumber(), call2.getNumber());
-  }
-
   public void addListener(DialerCallListener listener) {
     Assert.isMainThread();
     listeners.add(listener);
