Add support of ACTION_PACKAGE_CHANGED for car mode InCallService.

Currently only non-UI ICS can be added and bind in InCallController when
we received ACTION_PACKAGE_CHANGED. Change InCallController to swap to a
app entered in car mode when the app is enabled.

Bug: 183522745
Test: CTS test
Change-Id: Iad9bbac7f772f50e1615797a7fd3a237562d27e5
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index 08a64ca..c7c5ede 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -608,7 +608,7 @@
                             new InCallServiceBindingConnection(carModeConnectionInfo);
                     mIsCarMode = true;
                 } else {
-                    // Invalid car mode app; don't expect this but should handle it gracefully.
+                    // The app is not enabled. Using the default dialer connection instead
                     mCarModeConnection = null;
                     mIsCarMode = false;
                     mCurrentConnection = mDialerConnection;
@@ -908,6 +908,10 @@
                         if (mNonUIInCallServiceConnections != null) {
                             mNonUIInCallServiceConnections.addConnections(componentsToBind);
                         }
+
+                        // If the current car mode app become enabled from disabled, update
+                        // the connection to binding
+                        updateCarModeForConnections();
                     }
                 }
             } finally {
@@ -1455,6 +1459,10 @@
         } else {
             Log.i(this, "bindToServices: current UI doesn't support call; not binding.");
         }
+
+        IntentFilter packageChangedFilter = new IntentFilter(Intent.ACTION_PACKAGE_CHANGED);
+        packageChangedFilter.addDataScheme("package");
+        mContext.registerReceiver(mPackageChangedReceiver, packageChangedFilter);
     }
 
     private void updateNonUiInCallServices() {
@@ -1484,10 +1492,6 @@
             updateNonUiInCallServices();
         }
         mNonUIInCallServiceConnections.connect(call);
-
-        IntentFilter packageChangedFilter = new IntentFilter(Intent.ACTION_PACKAGE_CHANGED);
-        packageChangedFilter.addDataScheme("package");
-        mContext.registerReceiver(mPackageChangedReceiver, packageChangedFilter);
     }
 
     private InCallServiceInfo getDefaultDialerComponent() {