diff options
author | Anil Admal <aadmal@google.com> | 2019-04-22 10:30:51 -0700 |
---|---|---|
committer | Anil Admal <aadmal@google.com> | 2019-04-22 10:30:51 -0700 |
commit | 01809642e1c7214d936c0d35301b355fe6dbfdf0 (patch) | |
tree | 823d636adfc3fe09adb0e3e9d0b961136c0ddbbb /src/com/example | |
parent | 54ae24843ca798bdc62ac951a64b034775ab8208 (diff) | |
download | SampleLocationAttribution-android10-qpr3-s1-release.tar.gz |
Show 'Allow all the time' option in request permission dialogandroid-mainline-10.0.0_r9android-mainline-10.0.0_r7android-mainline-10.0.0_r5android-mainline-10.0.0_r4android-mainline-10.0.0_r10android-10.0.0_r9android-10.0.0_r8android-10.0.0_r7android-10.0.0_r45android-10.0.0_r44android-10.0.0_r43android-10.0.0_r42android-10.0.0_r41android-10.0.0_r40android-10.0.0_r39android-10.0.0_r38android-10.0.0_r37android-10.0.0_r36android-10.0.0_r35android-10.0.0_r34android-10.0.0_r33android-10.0.0_r32android-10.0.0_r31android-10.0.0_r30android-10.0.0_r29android-10.0.0_r28android-10.0.0_r27android-10.0.0_r26android-10.0.0_r25android-10.0.0_r24android-10.0.0_r23android-10.0.0_r22android-10.0.0_r21android-10.0.0_r20android-10.0.0_r19android-10.0.0_r18android-10.0.0_r16android-10.0.0_r15android-10.0.0_r14android-10.0.0_r13android-10.0.0_r12android10-qpr3-s1-releaseandroid10-qpr3-releaseandroid10-qpr2-s4-releaseandroid10-qpr2-s3-releaseandroid10-qpr2-s2-releaseandroid10-qpr2-s1-releaseandroid10-qpr2-releaseandroid10-qpr1-releaseandroid10-qpr1-mainline-releaseandroid10-qpr1-d-releaseandroid10-qpr1-c-s1-releaseandroid10-qpr1-c-releaseandroid10-qpr1-b-s1-releaseandroid10-qpr1-b-releaseandroid10-mainline-media-releaseandroid10-devandroid10-d4-s1-releaseandroid10-d4-releaseandroid10-c2f2-s2-releaseandroid10-c2f2-s1-releaseandroid10-c2f2-release
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.java | 30 |
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); } |