summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java1
-rw-r--r--services/companion/java/com/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController.java29
2 files changed, 30 insertions, 0 deletions
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
index 7975e49541a0..ed61d645dc6e 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
@@ -306,6 +306,7 @@ public class CompanionDeviceManagerService extends SystemService {
} else if (phase == PHASE_BOOT_COMPLETED) {
// Run the Inactive Association Removal job service daily.
InactiveAssociationsRemovalService.schedule(getContext());
+ mCrossDeviceSyncController.onBootCompleted();
}
}
diff --git a/services/companion/java/com/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController.java b/services/companion/java/com/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController.java
index 937d7fed3542..8c6ff86d6d63 100644
--- a/services/companion/java/com/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController.java
+++ b/services/companion/java/com/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController.java
@@ -146,6 +146,31 @@ public class CrossDeviceSyncController {
mPhoneAccountManager = new PhoneAccountManager(mContext);
}
+ /** Invoke set-up tasks that happen when boot is completed. */
+ public void onBootCompleted() {
+ if (!CompanionDeviceConfig.isEnabled(CompanionDeviceConfig.ENABLE_CONTEXT_SYNC_TELECOM)) {
+ return;
+ }
+
+ mPhoneAccountManager.onBootCompleted();
+
+ final TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class);
+ if (telecomManager.getCallCapablePhoneAccounts().size() != 0) {
+ final PhoneAccountHandle defaultOutgoingTelAccountHandle =
+ telecomManager.getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL);
+ if (defaultOutgoingTelAccountHandle != null) {
+ final PhoneAccount defaultOutgoingTelAccount = telecomManager.getPhoneAccount(
+ defaultOutgoingTelAccountHandle);
+ if (defaultOutgoingTelAccount != null) {
+ mCallFacilitators.add(
+ new CallMetadataSyncData.CallFacilitator(
+ defaultOutgoingTelAccount.getLabel().toString(),
+ FACILITATOR_ID_SYSTEM));
+ }
+ }
+ }
+ }
+
private void processCallCreateRequests(int associationId,
CallMetadataSyncData callMetadataSyncData) {
final Iterator<CallMetadataSyncData.CallCreateRequest> iterator =
@@ -546,6 +571,10 @@ public class CrossDeviceSyncController {
CallMetadataSyncConnectionService.class);
}
+ void onBootCompleted() {
+ mTelecomManager.clearPhoneAccounts();
+ }
+
PhoneAccountHandle getPhoneAccountHandle(int associationId, String appIdentifier) {
return mPhoneAccountHandles.get(
new PhoneAccountHandleIdentifier(associationId, appIdentifier));