Merge "Fix NPE when disconnect cause wasn't set" into lmp-dev
diff --git a/src/com/android/server/telecom/PhoneStateBroadcaster.java b/src/com/android/server/telecom/PhoneStateBroadcaster.java
index 0c16689..b96eb02 100644
--- a/src/com/android/server/telecom/PhoneStateBroadcaster.java
+++ b/src/com/android/server/telecom/PhoneStateBroadcaster.java
@@ -61,9 +61,17 @@
 
     @Override
     public void onCallRemoved(Call call) {
-        if (!CallsManager.getInstance().hasAnyCalls()) {
-            sendPhoneStateChangedBroadcast(call, TelephonyManager.CALL_STATE_IDLE);
+        // Recalculate the current phone state based on the consolidated state of the remaining
+        // calls in the call list.
+        final CallsManager callsManager = CallsManager.getInstance();
+        int callState = TelephonyManager.CALL_STATE_IDLE;
+        if (callsManager.hasRingingCall()) {
+            callState = TelephonyManager.CALL_STATE_RINGING;
+        } else if (callsManager.getFirstCallWithState(CallState.DIALING, CallState.ACTIVE,
+                    CallState.ON_HOLD) != null) {
+            callState = TelephonyManager.CALL_STATE_OFFHOOK;
         }
+        sendPhoneStateChangedBroadcast(call, callState);
     }
 
     int getCallState() {