diff options
author | 2021-11-01 20:34:13 +0000 | |
---|---|---|
committer | 2021-11-01 20:34:13 +0000 | |
commit | e1211c6726443394669a8b46bdcd36aee02faba3 (patch) | |
tree | 9770bc152c65719c7e23fcc54cfd85ad45b83126 | |
parent | 2bb5aa5527d117ecc73e76d50116a5aa497058ef (diff) | |
parent | 404168a4f01a86518a68c74cac9f389ba80b4456 (diff) |
Merge "Make sure sendresult after association was created" into sc-v2-dev
4 files changed, 22 insertions, 1 deletions
diff --git a/core/java/android/companion/ICompanionDeviceDiscoveryService.aidl b/core/java/android/companion/ICompanionDeviceDiscoveryService.aidl index a630873c7f67..e1c13f7fc9e1 100644 --- a/core/java/android/companion/ICompanionDeviceDiscoveryService.aidl +++ b/core/java/android/companion/ICompanionDeviceDiscoveryService.aidl @@ -29,4 +29,6 @@ oneway interface ICompanionDeviceDiscoveryService { in String callingPackage, in IFindDeviceCallback findCallback, in AndroidFuture<Association> serviceCallback); + + void onAssociationCreated(); } diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java index b4cafd8548f4..edbfd2a8f03e 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java @@ -254,8 +254,14 @@ public class CompanionDeviceActivity extends Activity { Log.i(LOG_TAG, "onDeviceConfirmed(selectedDevice = " + selectedDevice + ")"); getService().onDeviceSelected( getCallingPackage(), getDeviceMacAddress(selectedDevice.device)); + } + + void setResultAndFinish() { + Log.i(LOG_TAG, "setResultAndFinish(selectedDevice = " + + getService().mSelectedDevice.device + ")"); setResult(RESULT_OK, - new Intent().putExtra(CompanionDeviceManager.EXTRA_DEVICE, selectedDevice.device)); + new Intent().putExtra( + CompanionDeviceManager.EXTRA_DEVICE, getService().mSelectedDevice.device)); finish(); } diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java index c24782e8b310..5df8e3c83a7a 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java @@ -117,6 +117,11 @@ public class CompanionDeviceDiscoveryService extends Service { CompanionDeviceDiscoveryService::startDiscovery, CompanionDeviceDiscoveryService.this, request)); } + + @Override + public void onAssociationCreated() { + Handler.getMain().post(CompanionDeviceDiscoveryService.this::onAssociationCreated); + } }; private ScanCallback mBLEScanCallback; @@ -222,6 +227,11 @@ public class CompanionDeviceDiscoveryService extends Service { SCAN_TIMEOUT); } + @MainThread + private void onAssociationCreated() { + mActivity.setResultAndFinish(); + } + private boolean shouldScan(List<? extends DeviceFilter> mediumSpecificFilters) { return !isEmpty(mediumSpecificFilters) || isEmpty(mFilters); } diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index 4748a86b79c6..202876627117 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -457,6 +457,9 @@ public class CompanionDeviceManagerService extends SystemService implements Bind }, FgThread.getExecutor()).whenComplete(uncheckExceptions((association, err) -> { if (err == null) { addAssociation(association, userId); + mServiceConnectors.forUser(userId).post(service -> { + service.onAssociationCreated(); + }); } else { Slog.e(LOG_TAG, "Failed to discover device(s)", err); callback.onFailure("No devices found: " + err.getMessage()); |