summaryrefslogtreecommitdiff
path: root/src/com/example
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 /src/com/example
parent54ae24843ca798bdc62ac951a64b034775ab8208 (diff)
downloadSampleLocationAttribution-android10-c2f2-s2-release.tar.gz
Fixes: 131088069 Test: Verified on a Pixel device. Change-Id: Ic293ceb2fb24023f0e8b31a85a7feb5327091457
Diffstat (limited to 'src/com/example')
-rw-r--r--src/com/example/android/locationattribution/MainActivity.java30
1 files changed, 25 insertions, 5 deletions
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);
}