diff options
author | Tobrun Van Nuland <tobrun.van.nuland@gmail.com> | 2016-06-23 11:24:25 +0200 |
---|---|---|
committer | Antonio Zugaldia <antonio@mapbox.com> | 2016-06-24 08:56:11 -0400 |
commit | b37de9f8f42d9a2ffd956310087532af3dc9e865 (patch) | |
tree | 879701f328db4b3a690dce4b352a4a348dfd34d5 /platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java | |
parent | cff1a8929fe38e724592532df990eb5481de06b6 (diff) | |
download | qtlocation-mapboxgl-b37de9f8f42d9a2ffd956310087532af3dc9e865.tar.gz |
[android] - Fix locational runtime permissions
Fixes #5450
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java index 9d514b2870..89b08a6787 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java @@ -1,5 +1,6 @@ package com.mapbox.mapboxsdk.testapp.activity; +import android.Manifest; import android.content.ComponentName; import android.content.Intent; import android.content.pm.ActivityInfo; @@ -9,7 +10,11 @@ import android.content.pm.PackageManager; import android.content.res.Resources; import android.os.AsyncTask; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.StringRes; +import android.support.design.widget.Snackbar; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; @@ -61,10 +66,16 @@ public class FeatureOverviewActivity extends AppCompatActivity { @Override public void onItemClicked(RecyclerView recyclerView, int position, View v) { if (!sectionAdapter.isSectionHeaderPosition(position)) { - Intent intent = new Intent(); int realPosition = sectionAdapter.getConvertedPosition(position); - intent.setComponent(new ComponentName(getPackageName(), features.get(realPosition).getName())); - startActivity(intent); + Feature feature = features.get(realPosition); + if (feature.getCategory().equals(getString(R.string.category_userlocation))) { + if ((ContextCompat.checkSelfPermission(FeatureOverviewActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) || + (ContextCompat.checkSelfPermission(FeatureOverviewActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)) { + ActivityCompat.requestPermissions(FeatureOverviewActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, realPosition); + return; + } + } + startFeature(feature); } } }); @@ -104,6 +115,22 @@ public class FeatureOverviewActivity extends AppCompatActivity { recyclerView.setAdapter(sectionAdapter); } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + startFeature(features.get(requestCode)); + }else{ + Snackbar.make(findViewById(android.R.id.content),"Can't open without the location permission.",Snackbar.LENGTH_SHORT).show(); + } + } + + private void startFeature(Feature feature) { + Intent intent = new Intent(); + intent.setComponent(new ComponentName(getPackageName(), feature.getName())); + startActivity(intent); + } + @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); |