diff options
author | 2025-03-19 14:39:22 -0700 | |
---|---|---|
committer | 2025-03-19 14:39:22 -0700 | |
commit | d3d151b7cbb41466f8b86454c3f2e42218266948 (patch) | |
tree | 2aeefd5fe06bef8b61d69b7070c55d6147496256 | |
parent | d859311070a0638715e4f455d26260d98ebdb789 (diff) |
[CDM] Handle BackgroundServiceStartNotAllowedException being thrown by discovery service.
Bug: 401242686
Test: Unable to reproduce
Flag: EXEMPT bug fix
Change-Id: If5830adff4fe89b92fb4c158afae1c0ac6963ebd
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() { |