From b9ae8a8c23ec1e0d6a07ee2f30c9590243c6c1ed Mon Sep 17 00:00:00 2001 From: Rahkem Fleming <49046134+Protactinium234@users.noreply.github.com> Date: Tue, 26 May 2026 02:31:36 -0600 Subject: [PATCH 1/2] Add try/catch to cancelLocationUpdates --- .../controller/impl/FusedLocationApiWrapperImpl.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/OneSignalSDK/onesignal/location/src/main/java/com/onesignal/location/internal/controller/impl/FusedLocationApiWrapperImpl.kt b/OneSignalSDK/onesignal/location/src/main/java/com/onesignal/location/internal/controller/impl/FusedLocationApiWrapperImpl.kt index b35cbfcb4c..9767085405 100644 --- a/OneSignalSDK/onesignal/location/src/main/java/com/onesignal/location/internal/controller/impl/FusedLocationApiWrapperImpl.kt +++ b/OneSignalSDK/onesignal/location/src/main/java/com/onesignal/location/internal/controller/impl/FusedLocationApiWrapperImpl.kt @@ -13,10 +13,14 @@ internal class FusedLocationApiWrapperImpl : IFusedLocationApiWrapper { googleApiClient: GoogleApiClient, locationListener: LocationListener, ) { - if (googleApiClient.isConnected) { - LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, locationListener) - } else { - Logging.warn("GoogleApiClient is not connected. Unable to cancel location updates.") + try { + if (googleApiClient.isConnected) { + LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, locationListener) + } else { + Logging.warn("GoogleApiClient is not connected. Unable to cancel location updates.") + } + } catch (t: Throwable) { + Logging.warn("FusedLocationApi.cancelLocationUpdates failed!", t) } } From 34633a4fb35fa4cf0cd75560cf9dd322cc0d412d Mon Sep 17 00:00:00 2001 From: Nan Date: Wed, 17 Jun 2026 17:42:34 -0700 Subject: [PATCH 2/2] fix: add try/catch to getLastLocation Mirror the guard on requestLocationUpdates/cancelLocationUpdates so a SecurityException from the GMS binder (e.g. a revoked or server-side denied location permission) is logged instead of crashing. Co-authored-by: Cursor --- .../controller/impl/FusedLocationApiWrapperImpl.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/OneSignalSDK/onesignal/location/src/main/java/com/onesignal/location/internal/controller/impl/FusedLocationApiWrapperImpl.kt b/OneSignalSDK/onesignal/location/src/main/java/com/onesignal/location/internal/controller/impl/FusedLocationApiWrapperImpl.kt index 9767085405..618b943570 100644 --- a/OneSignalSDK/onesignal/location/src/main/java/com/onesignal/location/internal/controller/impl/FusedLocationApiWrapperImpl.kt +++ b/OneSignalSDK/onesignal/location/src/main/java/com/onesignal/location/internal/controller/impl/FusedLocationApiWrapperImpl.kt @@ -42,8 +42,12 @@ internal class FusedLocationApiWrapperImpl : IFusedLocationApiWrapper { } override fun getLastLocation(googleApiClient: GoogleApiClient): Location? { - if (googleApiClient.isConnected) { - return LocationServices.FusedLocationApi.getLastLocation(googleApiClient) + try { + if (googleApiClient.isConnected) { + return LocationServices.FusedLocationApi.getLastLocation(googleApiClient) + } + } catch (t: Throwable) { + Logging.warn("FusedLocationApi.getLastLocation failed!", t) } return null }