summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorLeith Bade <leith@mapbox.com>2015-11-06 01:45:36 +1100
committerLeith Bade <leith@mapbox.com>2015-11-09 20:05:09 +1100
commit23d1b75e78ea08474336dbf6aecfb2b67bc434c9 (patch)
tree6f174e5838c7a3b3c186aaddfbaebc380807ae20 /android
parent30cac4ff0013051ffac8941524b9b88a1a98ffcc (diff)
downloadqtlocation-mapboxgl-23d1b75e78ea08474336dbf6aecfb2b67bc434c9.tar.gz
[android] Check for location permission in MyLocationTrackingModeActivity
Fixes #2110
Diffstat (limited to 'android')
-rw-r--r--android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java34
1 files changed, 30 insertions, 4 deletions
diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java b/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java
index d0bdb3223e..96384dc2b9 100644
--- a/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java
+++ b/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java
@@ -59,6 +59,7 @@ public class MainActivity extends AppCompatActivity {
// Used for permissions requests
private static final int PERMISSIONS_LOCATION = 0;
+ private static final int PERMISSIONS_TRACKING_MODE_ACTIVITY = 1;
// Used for info window
private static final DecimalFormat LAT_LON_FORMATTER = new DecimalFormat("#.#####");
@@ -217,6 +218,14 @@ public class MainActivity extends AppCompatActivity {
protected void onStart() {
super.onStart();
+ // We need to recheck permissions in case user revoked them via settings app
+ if ((ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
+ != PackageManager.PERMISSION_GRANTED) ||
+ (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
+ != PackageManager.PERMISSION_GRANTED)) {
+ toggleGps(false);
+ }
+
mMapView.onStart();
}
@@ -288,11 +297,17 @@ public class MainActivity extends AppCompatActivity {
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
- case PERMISSIONS_LOCATION: {
- if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ case PERMISSIONS_LOCATION:
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
enableGps();
}
- }
+ break;
+
+ case PERMISSIONS_TRACKING_MODE_ACTIVITY:
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ startActivity(new Intent(getApplicationContext(), MyLocationTrackingModeActivity.class));
+ }
+ break;
}
}
@@ -347,7 +362,18 @@ public class MainActivity extends AppCompatActivity {
return true;
case R.id.action_user_tracking_mode:
- startActivity(new Intent(getApplicationContext(), MyLocationTrackingModeActivity.class));
+ if ((ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION)
+ != PackageManager.PERMISSION_GRANTED) ||
+ (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)
+ != PackageManager.PERMISSION_GRANTED)) {
+ ActivityCompat.requestPermissions(MainActivity.this,
+ new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION},
+ PERMISSIONS_TRACKING_MODE_ACTIVITY);
+ } else {
+ startActivity(new Intent(getApplicationContext(), MyLocationTrackingModeActivity.class));
+ }
+
+
return true;
case R.id.action_polyline: