summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnil Admal <aadmal@google.com>2019-04-23 18:42:23 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-04-23 18:42:23 -0700
commitc7952bab7ab6127649d0f4e2d9d67f4af014fb82 (patch)
tree823d636adfc3fe09adb0e3e9d0b961136c0ddbbb
parentb231e4bbd96b1b93d529b517d1b7856fbb4bc42b (diff)
parent414210769cbe3ab244ec4af9eef1648e4933f863 (diff)
downloadSampleLocationAttribution-c7952bab7ab6127649d0f4e2d9d67f4af014fb82.tar.gz
Show 'Allow all the time' option in request permission dialog am: 01809642e1r_aml_301500702android-mainline-12.0.0_r55android-mainline-12.0.0_r112android-mainline-11.0.0_r9android-mainline-11.0.0_r8android-mainline-11.0.0_r7android-mainline-11.0.0_r6android-mainline-11.0.0_r5android-mainline-11.0.0_r45android-mainline-11.0.0_r44android-mainline-11.0.0_r43android-mainline-11.0.0_r42android-mainline-11.0.0_r41android-mainline-11.0.0_r40android-mainline-11.0.0_r4android-mainline-11.0.0_r39android-mainline-11.0.0_r38android-mainline-11.0.0_r37android-mainline-11.0.0_r36android-mainline-11.0.0_r35android-mainline-11.0.0_r34android-mainline-11.0.0_r33android-mainline-11.0.0_r32android-mainline-11.0.0_r31android-mainline-11.0.0_r30android-mainline-11.0.0_r3android-mainline-11.0.0_r29android-mainline-11.0.0_r28android-mainline-11.0.0_r27android-mainline-11.0.0_r26android-mainline-11.0.0_r25android-mainline-11.0.0_r24android-mainline-11.0.0_r23android-mainline-11.0.0_r22android-mainline-11.0.0_r21android-mainline-11.0.0_r20android-mainline-11.0.0_r2android-mainline-11.0.0_r19android-mainline-11.0.0_r18android-mainline-11.0.0_r17android-mainline-11.0.0_r16android-mainline-11.0.0_r15android-mainline-11.0.0_r14android-mainline-11.0.0_r13android-mainline-11.0.0_r12android-mainline-11.0.0_r10android-mainline-11.0.0_r1android-11.0.0_r9android-11.0.0_r8android-11.0.0_r7android-11.0.0_r48android-11.0.0_r47android-11.0.0_r46android-11.0.0_r45android-11.0.0_r44android-11.0.0_r43android-11.0.0_r42android-11.0.0_r41android-11.0.0_r40android-11.0.0_r39android-11.0.0_r38android-11.0.0_r37android-11.0.0_r36android-11.0.0_r35android-11.0.0_r34android-11.0.0_r33android-11.0.0_r32android-11.0.0_r31android-11.0.0_r30android-11.0.0_r29android-11.0.0_r28android-11.0.0_r27android-11.0.0_r26android-11.0.0_r24android-11.0.0_r23android-11.0.0_r22android-11.0.0_r21android-11.0.0_r20android-11.0.0_r19android-11.0.0_r18android-11.0.0_r16android-11.0.0_r15android-11.0.0_r14android-11.0.0_r13android-11.0.0_r12android-11.0.0_r11android-11.0.0_r10aml_tz2_305400500aml_tz2_305400300aml_tz2_305400100aml_tz2_304500300aml_tz2_303900110aml_tz2_303900102aml_tz2_303800002aml_tz2_303800001aml_tz2_303200001android12-mainline-tzdata2-releaseandroid11-qpr3-s1-releaseandroid11-qpr3-releaseandroid11-qpr2-releaseandroid11-qpr1-s2-releaseandroid11-qpr1-s1-releaseandroid11-qpr1-releaseandroid11-qpr1-d-s1-releaseandroid11-qpr1-d-releaseandroid11-qpr1-c-releaseandroid11-mainline-tethering-releaseandroid11-mainline-sparse-2021-jan-releaseandroid11-mainline-sparse-2020-dec-releaseandroid11-mainline-releaseandroid11-mainline-permission-releaseandroid11-mainline-os-statsd-releaseandroid11-mainline-networkstack-releaseandroid11-mainline-media-swcodec-releaseandroid11-mainline-media-releaseandroid11-mainline-extservices-releaseandroid11-mainline-documentsui-releaseandroid11-mainline-conscrypt-releaseandroid11-mainline-cellbroadcast-releaseandroid11-mainline-captiveportallogin-releaseandroid11-devandroid11-d2-releaseandroid11-d1-s7-releaseandroid11-d1-s6-releaseandroid11-d1-s5-releaseandroid11-d1-s1-releaseandroid11-d1-releaseandroid11-d1-b-releaseaml_tz2_305400100
am: 414210769c Change-Id: Ie0dc81e31d47e921b9c301321d0b6670a08734ef
-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);
}