summaryrefslogtreecommitdiffstats
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)
downloadplatform_packages_apps_SampleLocationAttribution-android11-mainline-release.tar.gz
platform_packages_apps_SampleLocationAttribution-android11-mainline-release.tar.bz2
platform_packages_apps_SampleLocationAttribution-android11-mainline-release.zip
Show 'Allow all the time' option in request permission dialog am: 01809642e1android-mainline-11.0.0_r1android11-mainline-releaseandroid11-dev
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);
}