Skip to content

Commit 57dfc47

Browse files
author
Martin Dinh
committed
Merge branch '172-implement-missing-locationlistener-callbacks' into 'master'
Resolve "Implement missing LocationListener callbacks" Closes #172 See merge request pace/mobile/android/pace-cloud-sdk!168
2 parents e2e8790 + ed8a299 commit 57dfc47

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ x.y.z Release notes (yyyy-MM-dd)
1717
* Regenerate communication code to fix problem with unparsable error response
1818
* Fix overwriting of custom set `utm_params`
1919
* Fix bug where `AppActivity` was finished when it was started and `AppKit.openApps(...)` was called at the same time
20+
* Overwrite `LocationListener` callback functions to avoid problems/crashes for devices with Android version smaller than 11
2021

2122
### Internal
2223

library/src/main/java/cloud/pace/sdk/utils/LocationProvider.kt

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import android.location.Location
88
import android.location.LocationListener
99
import android.location.LocationManager
1010
import android.os.Build
11+
import android.os.Bundle
1112
import android.os.Looper
1213
import androidx.core.content.ContextCompat
1314
import androidx.lifecycle.LiveData
1415
import androidx.lifecycle.MutableLiveData
1516
import androidx.lifecycle.distinctUntilChanged
1617
import cloud.pace.sdk.PACECloudSDK
17-
import com.google.android.gms.location.LocationAvailability
1818
import com.google.android.gms.location.LocationCallback
1919
import com.google.android.gms.location.LocationRequest
2020
import com.google.android.gms.location.LocationResult
@@ -155,6 +155,18 @@ class LocationProviderImpl(
155155
continuation.resumeIfActive(it)
156156
}
157157
}
158+
159+
override fun onProviderDisabled(provider: String) {
160+
continuation.resumeWithExceptionIfActive(NoLocationFound)
161+
}
162+
163+
override fun onProviderEnabled(provider: String) {
164+
continuation.resumeWithExceptionIfActive(NoLocationFound)
165+
}
166+
167+
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {
168+
continuation.resumeWithExceptionIfActive(NoLocationFound)
169+
}
158170
}
159171
locationManager?.requestLocationUpdates(provider, LOCATION_REQUEST_INTERVAL, LOCATION_REQUEST_SMALLEST_DISPLACEMENT, listener, Looper.getMainLooper())
160172
continuation.invokeOnCancellation {
@@ -234,6 +246,18 @@ class LocationProviderImpl(
234246
locationManager?.removeUpdates(this)
235247
continuation.resumeIfActive(if (validate) getLocationIfValid(location, LOW_ACCURACY, startTime) else location)
236248
}
249+
250+
override fun onProviderDisabled(provider: String) {
251+
continuation.resumeWithExceptionIfActive(NoLocationFound)
252+
}
253+
254+
override fun onProviderEnabled(provider: String) {
255+
continuation.resumeWithExceptionIfActive(NoLocationFound)
256+
}
257+
258+
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {
259+
continuation.resumeWithExceptionIfActive(NoLocationFound)
260+
}
237261
}
238262
locationManager?.requestSingleUpdate(provider, listener, Looper.getMainLooper())
239263
continuation.invokeOnCancellation {

0 commit comments

Comments
 (0)