diff options
2 files changed, 19 insertions, 3 deletions
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index b4c107c1a2c1..62bb9f155c34 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -294,6 +294,15 @@ public class CompanionDeviceManagerService extends SystemService { private boolean onCompanionApplicationBindingDiedInternal( @UserIdInt int userId, @NonNull String packageName) { + // Update the current connected devices sets when binderDied, so that application is able + // to call notifyDeviceAppeared after re-launch the application. + for (AssociationInfo ai : + mAssociationStore.getAssociationsForPackage(userId, packageName)) { + int id = ai.getId(); + Slog.i(TAG, "Removing association id: " + id + " for package: " + + packageName + " due to binderDied."); + mDevicePresenceMonitor.removeDeviceFromMonitoring(id); + } // TODO(b/218613015): implement. return false; } diff --git a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java index 6371b25e6347..24be1b6fd701 100644 --- a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java +++ b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java @@ -206,6 +206,15 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange } /** + * Remove the current connected devices by associationId. + */ + public void removeDeviceFromMonitoring(int associationId) { + mConnectedBtDevices.remove(associationId); + mNearbyBleDevices.remove(associationId); + mReportedSelfManagedDevices.remove(associationId); + } + + /** * Implements * {@link AssociationStore.OnChangeListener#onAssociationRemoved(AssociationInfo)} */ @@ -217,9 +226,7 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange Log.d(TAG, " > association=" + association); } - mConnectedBtDevices.remove(id); - mNearbyBleDevices.remove(id); - mReportedSelfManagedDevices.remove(id); + removeDeviceFromMonitoring(id); // Do NOT call mCallback.onDeviceDisappeared()! // CompanionDeviceManagerService will know that the association is removed, and will do |