summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Raphael Kim <raphk@google.com> 2025-03-19 14:39:22 -0700
committer Raphael Kim <raphk@google.com> 2025-03-19 14:39:22 -0700
commitd3d151b7cbb41466f8b86454c3f2e42218266948 (patch)
tree2aeefd5fe06bef8b61d69b7070c55d6147496256
parentd859311070a0638715e4f455d26260d98ebdb789 (diff)
[CDM] Handle BackgroundServiceStartNotAllowedException being thrown by discovery service.
Bug: 401242686 Test: Unable to reproduce Flag: EXEMPT bug fix Change-Id: If5830adff4fe89b92fb4c158afae1c0ac6963ebd
-rw-r--r--packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java16
-rw-r--r--packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java14
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() {