summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnil Admal <aadmal@google.com>2019-04-23 15:29:10 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-04-23 15:29:10 -0700
commit414210769cbe3ab244ec4af9eef1648e4933f863 (patch)
tree823d636adfc3fe09adb0e3e9d0b961136c0ddbbb
parent01c56399fbdb6441d51a87f5ae7dbc283f7bba50 (diff)
parent01809642e1c7214d936c0d35301b355fe6dbfdf0 (diff)
downloadSampleLocationAttribution-414210769cbe3ab244ec4af9eef1648e4933f863.tar.gz
am: 01809642e1 Change-Id: I0c2c0ab7db9874530827c517516b1c066e82bdb6
-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);
}