gimmickbutreal
[Android Studio] 위치 정보 엑세스 권한 요청 본문
위치기반 앱을 만들기 위해서는 위치 정보 액세스 권한을 요청해야 합니다.
우선 manifest에 아래의 두 줄의 코드를 입력해줍니다.
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
ACCESS_COARSE_LOCATION 권한은 선언하고 ACCESS_FINE_LOCATION 권한은 선언하지 않으면 높은 정확도의 위치를 수신할 수 없으므로 두 줄 모두 입력해주어야 합니다.
// 위치 정보 엑세스 권한 요청
private final ActivityResultLauncher<String[]> locationPermissionRequest = registerForActivityResult(
new ActivityResultContracts.RequestMultiplePermissions(),
result -> {
Boolean fineLocationGranted = result.get(Manifest.permission.ACCESS_FINE_LOCATION);
Boolean coarseLocationGranted = result.get(Manifest.permission.ACCESS_COARSE_LOCATION);
if (fineLocationGranted != null && fineLocationGranted) {
// Precise location access granted
startLocationUpdates();
} else if (coarseLocationGranted != null && coarseLocationGranted) {
startLocationUpdates();
// Only approximate location access granted
} else {
Toast.makeText(this,
"Unable to launch app because location permissions are denied.",
Toast.LENGTH_SHORT
).show();
finish();
}
}
);
위와 같은 코드를 통해 위치 정보 액세스 권한을 요청할 수 있습니다.
private void checkLocationPermission() {
boolean coarseLocationGranted = ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_COARSE_LOCATION
) == PackageManager.PERMISSION_GRANTED;
boolean fineLocationGranted = ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_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 (link)Request permissions.(구글개발자)
if (!coarseLocationGranted && !fineLocationGranted) {
locationPermissionRequest.launch(new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
});
} else {
startLocationUpdates();
}
}
위 코드는 위치 권한이 부여되었는지 확인하는 과정을 나타냅니다.
위치 권한이 없으면 위치 권한을 요청하며, 권한이 있는 경우에는 사용자의 위치를 실시간으로 받기 위해 startLocationUpdates() method를 호출합니다.
아래의 글을 참고하였습니다.
https://developer.android.com/training/location/permissions?hl=ko
'Algorithm > Java' 카테고리의 다른 글
[백준/자바] 2748번 해설 - Java (0) | 2022.09.03 |
---|---|
[CS/Java] 정적(Static) 변수 (0) | 2022.07.17 |
[백준/자바] 10162번 해설 - Java (0) | 2022.03.24 |
[자바/생활코딩] 객체 지향 프로그래밍 - 남의 클래스 & 남의 인스턴스 (0) | 2022.03.15 |
[백준/자바] 5585번 해설 - Java (0) | 2022.03.13 |