diff options
2 files changed, 21 insertions, 9 deletions
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java index 964268e4ad14..518757dd0d5c 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java @@ -359,11 +359,7 @@ public class CompanionAssociationActivity extends FragmentActivity implements if (CompanionDeviceDiscoveryService.getScanResult().getValue().isEmpty()) { // If the scan times out, do NOT close the activity automatically and let the // user manually cancel the flow. - synchronized (LOCK) { - if (sDiscoveryStarted) { - stopDiscovery(); - } - } + stopDiscovery(); mTimeoutMessage.setText(getString(R.string.message_discovery_hard_timeout)); mTimeoutMessage.setVisibility(View.VISIBLE); } @@ -455,8 +451,14 @@ public class CompanionAssociationActivity extends FragmentActivity implements } private void stopDiscovery() { - if (mRequest != null && !mRequest.isSelfManaged()) { - CompanionDeviceDiscoveryService.stop(this); + if (mRequest == null || mRequest.isSelfManaged()) { + return; + } + + synchronized (LOCK) { + if (sDiscoveryStarted) { + CompanionDeviceDiscoveryService.stop(this); + } } } diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java index 50a01b3bc7c9..7b4794506adb 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java @@ -136,7 +136,12 @@ public class CompanionDeviceDiscoveryService extends Service { intent.setAction(ACTION_START_DISCOVERY); intent.putExtra(EXTRA_ASSOCIATION_REQUEST, associationRequest); - context.startService(intent); + try { + context.startService(intent); + } catch (IllegalStateException e) { + Slog.e(TAG, "Failed to start discovery.", e); + return false; + } return true; } @@ -144,7 +149,12 @@ public class CompanionDeviceDiscoveryService extends Service { static void stop(@NonNull Context context) { final Intent intent = new Intent(context, CompanionDeviceDiscoveryService.class); intent.setAction(ACTION_STOP_DISCOVERY); - context.startService(intent); + + try { + context.startService(intent); + } catch (IllegalStateException e) { + Slog.e(TAG, "Failed to stop discovery.", e); + } } static LiveData<List<DeviceFilterPair<?>>> getScanResult() { |