summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Leege <bleege@gmail.com>2016-02-08 16:05:15 -0800
committerBrad Leege <bleege@gmail.com>2016-02-10 19:05:23 -0800
commit167cbecdd6e388f9bd03d7ba52dc1dc303b83162 (patch)
tree51a1c4a39629e340cca2722ab1f2f98f28e60e9b
parent529896a7ae4033d0317c1ee80699f91b6be4a5ef (diff)
downloadqtlocation-mapboxgl-167cbecdd6e388f9bd03d7ba52dc1dc303b83162.tar.gz
[android] #2421 - Adding Location Permission checks to toggleGPS to prevent race condition issues
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationServices.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationServices.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationServices.java
index f59921cee6..5fc094a102 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationServices.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationServices.java
@@ -1,10 +1,13 @@
package com.mapbox.mapboxsdk.location;
+import android.Manifest;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationManager;
import android.support.annotation.NonNull;
+import android.support.v4.content.ContextCompat;
import android.util.Log;
import com.mapbox.mapboxsdk.telemetry.TelemetryLocationReceiver;
import com.mapzen.android.lost.api.LocationRequest;
@@ -61,7 +64,13 @@ public class LocationServices implements com.mapzen.android.lost.api.LocationLis
*/
public void toggleGPS(boolean enableGPS) {
- // Disconnect
+ if ((ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) ||
+ (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
+ Log.w(TAG, "Location Permissions Not Granted Yet. Try again after requesting.");
+ return;
+ }
+
+ // Disconnect
if (mLocationClient.isConnected()) {
// Disconnect first to ensure that the new requests are GPS
com.mapzen.android.lost.api.LocationServices.FusedLocationApi.removeLocationUpdates(this);