summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnil Admal <aadmal@google.com>2019-04-22 10:30:51 -0700
committerAnil Admal <aadmal@google.com>2019-04-22 10:30:51 -0700
commit01809642e1c7214d936c0d35301b355fe6dbfdf0 (patch)
tree823d636adfc3fe09adb0e3e9d0b961136c0ddbbb
parent54ae24843ca798bdc62ac951a64b034775ab8208 (diff)
downloadSampleLocationAttribution-01809642e1c7214d936c0d35301b355fe6dbfdf0.tar.gz
Fixes: 131088069 Test: Verified on a Pixel device. Change-Id: Ic293ceb2fb24023f0e8b31a85a7feb5327091457
-rw-r--r--Android.mk1
-rw-r--r--src/com/example/android/locationattribution/MainActivity.java30
2 files changed, 25 insertions, 6 deletions
diff --git a/Android.mk b/Android.mk
index d2e2a8d..acc21e4 100644
--- a/Android.mk
+++ b/Android.mk
@@ -15,7 +15,6 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SDK_VERSION := current
-LOCAL_PRIVILEGED_MODULE := true
LOCAL_PRODUCT_MODULE := true
# Name of the APK to build
diff --git a/src/com/example/android/locationattribution/MainActivity.java b/src/com/example/android/locationattribution/MainActivity.java
index 1ca5c35..3f72bfc 100644
--- a/src/com/example/android/locationattribution/MainActivity.java
+++ b/src/com/example/android/locationattribution/MainActivity.java
@@ -22,7 +22,6 @@ import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import androidx.core.app.ActivityCompat;
-import androidx.core.content.ContextCompat;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Spannable;
@@ -90,9 +89,18 @@ public class MainActivity extends AppCompatActivity {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
- if (ContextCompat.checkSelfPermission(MainActivity.this,
- Manifest.permission.ACCESS_FINE_LOCATION)
- == PackageManager.PERMISSION_GRANTED) {
+ if (isLocationPermissionGranted(Manifest.permission.ACCESS_FINE_LOCATION)) {
+ if (!isLocationPermissionGranted(
+ Manifest.permission.ACCESS_BACKGROUND_LOCATION)) {
+ // Request 'Allow all the time' permission if the user didn't select
+ // 'Don't ask again' option earlier.
+ if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
+ Manifest.permission.ACCESS_BACKGROUND_LOCATION)) {
+ showRequestBackgroundLocationPermissionDialog();
+ return;
+ }
+ }
+
// We can't show tri-state dialog when permission is already granted.
// So, go to the location permission settings screen directly.
showLocationPermissionSettingsDashboard();
@@ -118,9 +126,21 @@ public class MainActivity extends AppCompatActivity {
};
}
+ private boolean isLocationPermissionGranted(String locationPermissionType) {
+ return ActivityCompat.checkSelfPermission(this, locationPermissionType)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
private void showRequestLocationPermissionDialog() {
ActivityCompat.requestPermissions(this,
- new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
+ new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.ACCESS_BACKGROUND_LOCATION},
+ NON_FRAMEWORK_LOCATION_PERMISSION);
+ }
+
+ private void showRequestBackgroundLocationPermissionDialog() {
+ ActivityCompat.requestPermissions(this,
+ new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION},
NON_FRAMEWORK_LOCATION_PERMISSION);
}