diff options
author | Leith Bade <leith@mapbox.com> | 2015-11-06 01:45:36 +1100 |
---|---|---|
committer | Leith Bade <leith@mapbox.com> | 2015-11-09 20:05:09 +1100 |
commit | 23d1b75e78ea08474336dbf6aecfb2b67bc434c9 (patch) | |
tree | 6f174e5838c7a3b3c186aaddfbaebc380807ae20 /android | |
parent | 30cac4ff0013051ffac8941524b9b88a1a98ffcc (diff) | |
download | qtlocation-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.java | 34 |
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: |