1+ package com .example .snippets .location ;
2+
3+ import android .Manifest ;
4+ import android .os .Build ;
5+ import android .os .Bundle ;
6+ import androidx .activity .ComponentActivity ;
7+ import androidx .activity .result .ActivityResultLauncher ;
8+ import androidx .activity .result .contract .ActivityResultContracts ;
9+ import java .util .Map ;
10+
11+ public class LocationPermissionsActivity extends ComponentActivity {
12+
13+ // [START misc_location_requestpermissions_java]
14+ private void requestPermissions () {
15+
16+ ActivityResultLauncher <String []> locationPermissionRequest =
17+ registerForActivityResult (new ActivityResultContracts
18+ .RequestMultiplePermissions (), result -> {
19+
20+ Boolean fineLocationGranted = null ;
21+ Boolean coarseLocationGranted = null ;
22+
23+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .N ) {
24+ fineLocationGranted = result .getOrDefault (
25+ Manifest .permission .ACCESS_FINE_LOCATION , false );
26+ coarseLocationGranted = result .getOrDefault (
27+ Manifest .permission .ACCESS_COARSE_LOCATION ,false );
28+ }
29+
30+ if (fineLocationGranted != null && fineLocationGranted ) {
31+ // Precise location access granted.
32+ } else if (coarseLocationGranted != null && coarseLocationGranted ) {
33+ // Only approximate location access granted.
34+ } else {
35+ // No location access granted.
36+ }
37+ }
38+ );
39+
40+ // ...
41+
42+ // Before you perform the actual permission request, check whether your app
43+ // already has the permissions, and whether your app needs to show a permission
44+ // rationale dialog. For more details, see Request permissions.
45+ locationPermissionRequest .launch (new String [] {
46+ Manifest .permission .ACCESS_FINE_LOCATION ,
47+ Manifest .permission .ACCESS_COARSE_LOCATION
48+ });
49+ }
50+ // [END misc_location_requestpermissions_java]
51+ }
0 commit comments