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() {