Handle android.telephony.event.EVENT_CALL_FORWARDED.

Bug: 33761801
Test: none
PiperOrigin-RevId: 181347696
Change-Id: Iaf09d1b45a2e97e4d8da24b5bd7172da152d703c
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 543cc3f..5d71d0a 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -29,6 +29,7 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
+import android.support.v4.os.BuildCompat;
 import android.telecom.Call;
 import android.telecom.Call.Details;
 import android.telecom.CallAudioState;
@@ -140,6 +141,7 @@
 
   private String childNumber;
   private String lastForwardedNumber;
+  private boolean isCallForwarded;
   private String callSubject;
   private PhoneAccountHandle phoneAccountHandle;
   @CallHistoryStatus private int callHistoryStatus = CALL_HISTORY_STATUS_UNKNOWN;
@@ -295,6 +297,13 @@
               LogUtil.i("DialerCall.onConnectionEvent", "merge complete");
               isMergeInProcess = false;
               break;
+            case TelephonyManagerCompat.EVENT_CALL_FORWARDED:
+              // Only handle this event for P+ since it's unreliable pre-P.
+              if (BuildCompat.isAtLeastP()) {
+                isCallForwarded = true;
+                update();
+              }
+              break;
             default:
               break;
           }
@@ -800,6 +809,10 @@
     return lastForwardedNumber;
   }
 
+  public boolean isCallForwarded() {
+    return isCallForwarded;
+  }
+
   /** @return The call subject, or {@code null} if none specified. */
   public String getCallSubject() {
     return callSubject;