diff options
-rw-r--r-- | telecomm/java/android/telecom/Call.java | 4 | ||||
-rw-r--r-- | telecomm/java/android/telecom/Phone.java | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java index 78b86d398718..5bdcdf4d63ef 100644 --- a/telecomm/java/android/telecom/Call.java +++ b/telecomm/java/android/telecom/Call.java @@ -2661,7 +2661,9 @@ public final class Call { // remove ourselves from the Phone. Note that we do this after completing all state updates // so a client can cleanly transition all their UI to the state appropriate for a // DISCONNECTED Call while still relying on the existence of that Call in the Phone's list. - if (mState == STATE_DISCONNECTED) { + // Check if the original state is already disconnected, otherwise onCallRemoved will be + // triggered before onCallAdded. + if (mState == STATE_DISCONNECTED && stateChanged) { fireCallDestroyed(); } } diff --git a/telecomm/java/android/telecom/Phone.java b/telecomm/java/android/telecom/Phone.java index 95a8e16ace3d..61e829e75930 100644 --- a/telecomm/java/android/telecom/Phone.java +++ b/telecomm/java/android/telecom/Phone.java @@ -174,6 +174,9 @@ public final class Phone { checkCallTree(parcelableCall); call.internalUpdate(parcelableCall, mCallByTelecomCallId); fireCallAdded(call); + if (call.getState() == Call.STATE_DISCONNECTED) { + internalRemoveCall(call); + } } else { Log.w(this, "Call %s added, but it was already present", call.internalGetCallId()); checkCallTree(parcelableCall); |