summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2017-04-26 12:16:38 +0200
committerGitHub <noreply@github.com>2017-04-26 12:16:38 +0200
commit184cbda4e8e150de22792a1fd8204fddf7897401 (patch)
tree7accbff23bcff4722a32136a1849b2c18fb216fe /platform
parent3c175adf30546fe58713b8fed29ac35a85e150be (diff)
downloadqtlocation-mapboxgl-184cbda4e8e150de22792a1fd8204fddf7897401.tar.gz
[android] - fix test app runtime permissions (#8823)
Diffstat (limited to 'platform')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/BaseLocationActivity.java49
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/CustomLocationEngineActivity.java53
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java38
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java39
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java38
5 files changed, 69 insertions, 148 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/BaseLocationActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/BaseLocationActivity.java
new file mode 100644
index 0000000000..a8d1772cb2
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/BaseLocationActivity.java
@@ -0,0 +1,49 @@
+package com.mapbox.mapboxsdk.testapp.activity.userlocation;
+
+import android.Manifest;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.support.annotation.NonNull;
+import android.support.annotation.UiThread;
+import android.support.v4.app.ActivityCompat;
+import android.support.v7.app.AppCompatActivity;
+
+import com.mapbox.services.android.telemetry.permissions.PermissionsManager;
+
+public abstract class BaseLocationActivity extends AppCompatActivity {
+
+ private static final int PERMISSIONS_LOCATION = 0;
+
+ @UiThread
+ protected final void toggleGps(boolean enableGps) {
+ if (enableGps) {
+ if (!PermissionsManager.areLocationPermissionsGranted(this)) {
+ ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
+ Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION);
+ } else {
+ enableLocation(true);
+ }
+ } else {
+ enableLocation(false);
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ if (requestCode == PERMISSIONS_LOCATION) {
+ if (!isRuntimePermissionsRequired() || isPermissionAccepted(grantResults)) {
+ enableLocation(true);
+ }
+ }
+ }
+
+ private boolean isPermissionAccepted(int[] grantResults) {
+ return grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED;
+ }
+
+ private boolean isRuntimePermissionsRequired() {
+ return android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
+ }
+
+ protected abstract void enableLocation(boolean enabled);
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/CustomLocationEngineActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/CustomLocationEngineActivity.java
index f4268830a0..660404f144 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/CustomLocationEngineActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/CustomLocationEngineActivity.java
@@ -1,13 +1,7 @@
package com.mapbox.mapboxsdk.testapp.activity.userlocation;
-import android.Manifest;
-import android.content.pm.PackageManager;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.UiThread;
import android.support.design.widget.FloatingActionButton;
-import android.support.v4.app.ActivityCompat;
-import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.mapbox.mapboxsdk.maps.MapView;
@@ -15,9 +9,8 @@ import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.testapp.R;
import com.mapbox.services.android.telemetry.location.LocationEngine;
-import com.mapbox.services.android.telemetry.permissions.PermissionsManager;
-public class CustomLocationEngineActivity extends AppCompatActivity {
+public class CustomLocationEngineActivity extends BaseLocationActivity {
private MapView mapView;
private MapboxMap mapboxMap;
@@ -25,8 +18,6 @@ public class CustomLocationEngineActivity extends AppCompatActivity {
private LocationEngine locationServices;
- private static final int PERMISSIONS_LOCATION = 0;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -56,6 +47,16 @@ public class CustomLocationEngineActivity extends AppCompatActivity {
}
@Override
+ protected void enableLocation(boolean enabled) {
+ mapboxMap.setMyLocationEnabled(enabled);
+ if (enabled) {
+ locationToggleFab.setImageResource(R.drawable.ic_location_disabled);
+ } else {
+ locationToggleFab.setImageResource(R.drawable.ic_my_location);
+ }
+ }
+
+ @Override
protected void onStart() {
super.onStart();
mapView.onStart();
@@ -96,36 +97,4 @@ public class CustomLocationEngineActivity extends AppCompatActivity {
super.onLowMemory();
mapView.onLowMemory();
}
-
- @UiThread
- public void toggleGps(boolean enableGps) {
- if (enableGps) {
- if (!PermissionsManager.areLocationPermissionsGranted(this)) {
- ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
- Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION);
- } else {
- enableLocation(true);
- }
- } else {
- enableLocation(false);
- }
- }
-
- private void enableLocation(boolean enabled) {
- mapboxMap.setMyLocationEnabled(enabled);
- if (enabled) {
- locationToggleFab.setImageResource(R.drawable.ic_location_disabled);
- } else {
- locationToggleFab.setImageResource(R.drawable.ic_my_location);
- }
- }
-
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- if (requestCode == PERMISSIONS_LOCATION) {
- if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- enableLocation(true);
- }
- }
- }
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java
index d31bd1fa51..5560f81fa9 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java
@@ -1,15 +1,10 @@
package com.mapbox.mapboxsdk.testapp.activity.userlocation;
-import android.Manifest;
-import android.content.pm.PackageManager;
import android.graphics.Color;
import android.location.Location;
import android.os.Bundle;
-import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
-import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
@@ -27,9 +22,7 @@ import com.mapbox.services.android.telemetry.location.LocationEngineListener;
/**
* Test activity showcasing how to change the MyLocationView drawable.
*/
-public class MyLocationDrawableActivity extends AppCompatActivity implements LocationEngineListener {
-
- private static final int PERMISSIONS_LOCATION = 0;
+public class MyLocationDrawableActivity extends BaseLocationActivity implements LocationEngineListener {
private MapView mapView;
private MapboxMap mapboxMap;
@@ -71,24 +64,8 @@ public class MyLocationDrawableActivity extends AppCompatActivity implements Loc
});
}
- public void toggleGps(boolean enableGps) {
- if (enableGps) {
- if ((ContextCompat.checkSelfPermission(this,
- Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
- || (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
- != PackageManager.PERMISSION_GRANTED)) {
- ActivityCompat.requestPermissions(this, new String[] {
- Manifest.permission.ACCESS_COARSE_LOCATION,
- Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION);
- } else {
- enableLocation(true);
- }
- } else {
- enableLocation(false);
- }
- }
-
- private void enableLocation(boolean enabled) {
+ @Override
+ protected void enableLocation(boolean enabled) {
if (enabled) {
mapboxMap.setMyLocationEnabled(true);
Location location = mapboxMap.getMyLocation();
@@ -103,15 +80,6 @@ public class MyLocationDrawableActivity extends AppCompatActivity implements Loc
}
@Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- if (requestCode == PERMISSIONS_LOCATION) {
- if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- enableLocation(true);
- }
- }
- }
-
- @Override
public void onConnected() {
// Nothing
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java
index 0417b1829f..a219b369f6 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java
@@ -1,18 +1,13 @@
package com.mapbox.mapboxsdk.testapp.activity.userlocation;
-import android.Manifest;
import android.app.Activity;
-import android.content.pm.PackageManager;
import android.graphics.Color;
import android.location.Location;
import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-import android.support.annotation.UiThread;
-import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
-import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;
@@ -30,14 +25,12 @@ import com.mapbox.services.android.telemetry.location.LocationEngineListener;
/**
* Test activity showcasing how to tint the MyLocationView.
*/
-public class MyLocationTintActivity extends AppCompatActivity implements LocationEngineListener {
+public class MyLocationTintActivity extends BaseLocationActivity implements LocationEngineListener {
private MapView mapView;
private MapboxMap mapboxMap;
private boolean firstRun;
- private static final int PERMISSIONS_LOCATION = 0;
-
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -180,25 +173,8 @@ public class MyLocationTintActivity extends AppCompatActivity implements Locatio
mapView.onSaveInstanceState(outState);
}
- @UiThread
- public void toggleGps(boolean enableGps) {
- if (enableGps) {
- if ((ContextCompat.checkSelfPermission(this,
- Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
- || (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
- != PackageManager.PERMISSION_GRANTED)) {
- ActivityCompat.requestPermissions(this, new String[] {
- Manifest.permission.ACCESS_COARSE_LOCATION,
- Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION);
- } else {
- enableLocation(true);
- }
- } else {
- enableLocation(false);
- }
- }
-
- private void enableLocation(boolean enabled) {
+ @Override
+ protected void enableLocation(boolean enabled) {
if (enabled) {
mapboxMap.setMyLocationEnabled(true);
if (mapboxMap.getMyLocation() != null) {
@@ -211,15 +187,6 @@ public class MyLocationTintActivity extends AppCompatActivity implements Locatio
}
}
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- if (requestCode == PERMISSIONS_LOCATION) {
- if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- enableLocation(true);
- }
- }
- }
-
private static class ViewUtils {
public static void attachClickListener(
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java
index 9e98d8c6b9..ac6c346a88 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java
@@ -1,14 +1,8 @@
package com.mapbox.mapboxsdk.testapp.activity.userlocation;
-import android.Manifest;
-import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.UiThread;
import android.support.design.widget.FloatingActionButton;
-import android.support.v4.app.ActivityCompat;
-import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;
@@ -20,9 +14,8 @@ import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.testapp.R;
import com.mapbox.services.android.telemetry.location.LocationEngine;
import com.mapbox.services.android.telemetry.location.LocationEngineListener;
-import com.mapbox.services.android.telemetry.permissions.PermissionsManager;
-public class MyLocationToggleActivity extends AppCompatActivity {
+public class MyLocationToggleActivity extends BaseLocationActivity {
private MapView mapView;
private MapboxMap mapboxMap;
@@ -31,8 +24,6 @@ public class MyLocationToggleActivity extends AppCompatActivity {
private LocationEngine locationServices;
private LocationEngineListener locationListener;
- private static final int PERMISSIONS_LOCATION = 0;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -107,21 +98,8 @@ public class MyLocationToggleActivity extends AppCompatActivity {
mapView.onLowMemory();
}
- @UiThread
- public void toggleGps(boolean enableGps) {
- if (enableGps) {
- if (!PermissionsManager.areLocationPermissionsGranted(this)) {
- ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
- Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION);
- } else {
- enableLocation(true);
- }
- } else {
- enableLocation(false);
- }
- }
-
- private void enableLocation(boolean enabled) {
+ @Override
+ protected void enableLocation(boolean enabled) {
if (enabled) {
// To move the camera instantly, we attempt to get the last known location and either
// ease or animate the camera to that position depending on the zoom level.
@@ -156,14 +134,4 @@ public class MyLocationToggleActivity extends AppCompatActivity {
}
mapboxMap.setMyLocationEnabled(enabled);
}
-
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- if (requestCode == PERMISSIONS_LOCATION) {
- if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- enableLocation(true);
- }
- }
- }
-
}