summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-03-20 03:49:36 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-20 03:49:36 -0700
commitc6f1535bf2224dd6d3a839a3280a4a9cd097ce6f (patch)
treeb21e90df662da16c8be3698ee46f0fd78be226e6
parent005fc9eca8c573e0e90e73f6730d9eaf44f68d14 (diff)
parentd3d151b7cbb41466f8b86454c3f2e42218266948 (diff)
Merge "[CDM] Handle BackgroundServiceStartNotAllowedException being thrown by discovery service." into main
-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() {