diff --git a/geolocator_android/CHANGELOG.md b/geolocator_android/CHANGELOG.md index a4067024..6a960f2b 100644 --- a/geolocator_android/CHANGELOG.md +++ b/geolocator_android/CHANGELOG.md @@ -1,6 +1,7 @@ ## 5.0.1+1 - Bump `androidx.core:core` to version 1.16.0 +- Fixes `location service on the device is disabled` bug on Wear OS ## 5.0.1 diff --git a/geolocator_android/android/src/main/java/com/baseflow/geolocator/location/FusedLocationClient.java b/geolocator_android/android/src/main/java/com/baseflow/geolocator/location/FusedLocationClient.java index a5e3f2b1..e10b7ded 100644 --- a/geolocator_android/android/src/main/java/com/baseflow/geolocator/location/FusedLocationClient.java +++ b/geolocator_android/android/src/main/java/com/baseflow/geolocator/location/FusedLocationClient.java @@ -16,6 +16,7 @@ import com.baseflow.geolocator.errors.ErrorCallback; import com.baseflow.geolocator.errors.ErrorCodes; import com.google.android.gms.common.api.ApiException; +import com.google.android.gms.common.api.CommonStatusCodes; import com.google.android.gms.common.api.ResolvableApiException; import com.google.android.gms.location.FusedLocationProviderClient; import com.google.android.gms.location.LocationAvailability; @@ -240,6 +241,7 @@ public void startPositionUpdates( locationSettingsResponse -> requestPositionUpdates(this.locationOptions)) .addOnFailureListener( e -> { + Log.w(TAG, "checkLocationSettings error", e); if (e instanceof ResolvableApiException) { // When we don't have an activity return an error code explaining the // location services are not enabled @@ -264,7 +266,9 @@ public void startPositionUpdates( } else { ApiException ae = (ApiException) e; int statusCode = ae.getStatusCode(); - if (statusCode == LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE) { + // checkLocationSettings returns DEVELOPER_ERROR on Wear OS. + if (statusCode == LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE + || statusCode == CommonStatusCodes.DEVELOPER_ERROR) { requestPositionUpdates(this.locationOptions); } else { // This should not happen according to Android documentation but it has been