From ac205142d63e54d47128578e914fe1a2dc2d662a Mon Sep 17 00:00:00 2001 From: jakeroseman Date: Mon, 9 Dec 2024 15:06:59 +0000 Subject: [PATCH 1/4] Moving location permissions snippets to repo --- .../location/LocationPermissionsActivity.java | 51 +++++++++++++++++++ .../example/snippets/location/Permissions.kt | 43 ++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.java create mode 100644 misc/src/main/java/com/example/snippets/location/Permissions.kt diff --git a/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.java b/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.java new file mode 100644 index 000000000..cd437d672 --- /dev/null +++ b/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.java @@ -0,0 +1,51 @@ +package com.example.snippets.location; + +import android.Manifest; +import android.os.Build; +import android.os.Bundle; +import androidx.activity.ComponentActivity; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import java.util.Map; + +public class LocationPermissionsActivity extends ComponentActivity { + + // [START misc_location_requestpermissions_java] + private void requestPermissions() { + + ActivityResultLauncher locationPermissionRequest = + registerForActivityResult(new ActivityResultContracts + .RequestMultiplePermissions(), result -> { + + Boolean fineLocationGranted = null; + Boolean coarseLocationGranted = null; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + fineLocationGranted = result.getOrDefault( + Manifest.permission.ACCESS_FINE_LOCATION, false); + coarseLocationGranted = result.getOrDefault( + Manifest.permission.ACCESS_COARSE_LOCATION,false); + } + + if (fineLocationGranted != null && fineLocationGranted) { + // Precise location access granted. + } else if (coarseLocationGranted != null && coarseLocationGranted) { + // Only approximate location access granted. + } else { + // No location access granted. + } + } + ); + + // ... + + // Before you perform the actual permission request, check whether your app + // already has the permissions, and whether your app needs to show a permission + // rationale dialog. For more details, see Request permissions. + locationPermissionRequest.launch(new String[] { + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.ACCESS_COARSE_LOCATION + }); + } + // [END misc_location_requestpermissions_java] +} \ No newline at end of file diff --git a/misc/src/main/java/com/example/snippets/location/Permissions.kt b/misc/src/main/java/com/example/snippets/location/Permissions.kt new file mode 100644 index 000000000..60a9d97c7 --- /dev/null +++ b/misc/src/main/java/com/example/snippets/location/Permissions.kt @@ -0,0 +1,43 @@ +package com.example.snippets.location + +import android.os.Build +import androidx.annotation.RequiresApi +import android.Manifest +import androidx.activity.ComponentActivity +import androidx.activity.result.contract.ActivityResultContracts + +// Assuming this function is inside a ComponentActivity or a subclass of it +class LocationActivity : ComponentActivity() { + + // [START misc_location_requestpermissions_kotlin] + @RequiresApi(Build.VERSION_CODES.N) + fun requestPermissions() { + val locationPermissionRequest = registerForActivityResult( + ActivityResultContracts.RequestMultiplePermissions() + ) { permissions -> + when { + permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> { + // Precise location access granted. + } + permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> { + // Only approximate location access granted. + } + else -> { + // No location access granted. + } + } + } + + // Before you perform the actual permission request, check whether your app + // already has the permissions, and whether your app needs to show a permission + // rationale dialog. For more details, see Request permissions: + // https://developer.android.com/training/permissions/requesting#request-permission + locationPermissionRequest.launch( + arrayOf( + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.ACCESS_COARSE_LOCATION + ) + ) + } + // [END misc_location_requestpermissions_kotlin] +} \ No newline at end of file From 245b149007c9068820b86d79b710809472748756 Mon Sep 17 00:00:00 2001 From: jakeroseman Date: Mon, 9 Dec 2024 15:09:38 +0000 Subject: [PATCH 2/4] Apply Spotless --- .../example/snippets/location/Permissions.kt | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/misc/src/main/java/com/example/snippets/location/Permissions.kt b/misc/src/main/java/com/example/snippets/location/Permissions.kt index 60a9d97c7..41fe838e4 100644 --- a/misc/src/main/java/com/example/snippets/location/Permissions.kt +++ b/misc/src/main/java/com/example/snippets/location/Permissions.kt @@ -1,10 +1,26 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.example.snippets.location -import android.os.Build -import androidx.annotation.RequiresApi import android.Manifest +import android.os.Build import androidx.activity.ComponentActivity import androidx.activity.result.contract.ActivityResultContracts +import androidx.annotation.RequiresApi // Assuming this function is inside a ComponentActivity or a subclass of it class LocationActivity : ComponentActivity() { @@ -40,4 +56,4 @@ class LocationActivity : ComponentActivity() { ) } // [END misc_location_requestpermissions_kotlin] -} \ No newline at end of file +} From 1098e28cc37567b5ddd0ed35dc7ff90b4c00ba0c Mon Sep 17 00:00:00 2001 From: jakeroseman Date: Mon, 9 Dec 2024 15:11:57 +0000 Subject: [PATCH 3/4] rationalize class names --- .../location/{Permissions.kt => LocationPermissionsActivity.kt} | 2 +- ...ssionsActivity.java => LocationPermissionsActivityJava.java} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename misc/src/main/java/com/example/snippets/location/{Permissions.kt => LocationPermissionsActivity.kt} (97%) rename misc/src/main/java/com/example/snippets/location/{LocationPermissionsActivity.java => LocationPermissionsActivityJava.java} (96%) diff --git a/misc/src/main/java/com/example/snippets/location/Permissions.kt b/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.kt similarity index 97% rename from misc/src/main/java/com/example/snippets/location/Permissions.kt rename to misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.kt index 41fe838e4..4e414d704 100644 --- a/misc/src/main/java/com/example/snippets/location/Permissions.kt +++ b/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.kt @@ -23,7 +23,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.RequiresApi // Assuming this function is inside a ComponentActivity or a subclass of it -class LocationActivity : ComponentActivity() { +class LocationPermissionsActivity : ComponentActivity() { // [START misc_location_requestpermissions_kotlin] @RequiresApi(Build.VERSION_CODES.N) diff --git a/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.java b/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivityJava.java similarity index 96% rename from misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.java rename to misc/src/main/java/com/example/snippets/location/LocationPermissionsActivityJava.java index cd437d672..8d5366c06 100644 --- a/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.java +++ b/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivityJava.java @@ -8,7 +8,7 @@ import androidx.activity.result.contract.ActivityResultContracts; import java.util.Map; -public class LocationPermissionsActivity extends ComponentActivity { +public class LocationPermissionsActivityJava extends ComponentActivity { // [START misc_location_requestpermissions_java] private void requestPermissions() { From 1357b63c9b828b97e8bb88065a6488ea8c5ca3ed Mon Sep 17 00:00:00 2001 From: jakeroseman Date: Mon, 9 Dec 2024 15:38:57 +0000 Subject: [PATCH 4/4] Fixing region tags --- .../example/snippets/location/LocationPermissionsActivity.kt | 4 ++-- .../snippets/location/LocationPermissionsActivityJava.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.kt b/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.kt index 4e414d704..674f8a42e 100644 --- a/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.kt +++ b/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivity.kt @@ -25,7 +25,7 @@ import androidx.annotation.RequiresApi // Assuming this function is inside a ComponentActivity or a subclass of it class LocationPermissionsActivity : ComponentActivity() { - // [START misc_location_requestpermissions_kotlin] + // [START android_location_requestpermissions_kotlin] @RequiresApi(Build.VERSION_CODES.N) fun requestPermissions() { val locationPermissionRequest = registerForActivityResult( @@ -55,5 +55,5 @@ class LocationPermissionsActivity : ComponentActivity() { ) ) } - // [END misc_location_requestpermissions_kotlin] + // [END android_location_requestpermissions_kotlin] } diff --git a/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivityJava.java b/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivityJava.java index 8d5366c06..8d20ad5d3 100644 --- a/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivityJava.java +++ b/misc/src/main/java/com/example/snippets/location/LocationPermissionsActivityJava.java @@ -10,7 +10,7 @@ public class LocationPermissionsActivityJava extends ComponentActivity { - // [START misc_location_requestpermissions_java] + // [START android_location_requestpermissions_java] private void requestPermissions() { ActivityResultLauncher locationPermissionRequest = @@ -47,5 +47,5 @@ private void requestPermissions() { Manifest.permission.ACCESS_COARSE_LOCATION }); } - // [END misc_location_requestpermissions_java] + // [END android_location_requestpermissions_java] } \ No newline at end of file