diff options
| author | 2023-05-01 11:45:25 -0700 | |
|---|---|---|
| committer | 2023-05-10 15:07:24 +0000 | |
| commit | b22697f14c763724f1c82d2c3b33c720cdb9cb25 (patch) | |
| tree | 600e35d3d82ec68f320f62cad523e7a228466cc5 | |
| parent | 2e423533293c52a796c09e40e2d5c7824f6be25f (diff) | |
Add PhoneAccounts on boot completed
The accounts aren't ready earlier
Bug: 265466098
Test: atest FrameworksServicesTests:com.android.server.companion.datatransfer.contextsync
Change-Id: I9049c9af05b3f7d585c79b6a8a09b5e6c24f028f
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));  |