[android] 안드로이드 위치 권한

안드로이드 앱을 개발할 때 사용자의 위치 정보를 이용하는 경우가 많습니다. 이를 위해서는 안드로이드 위치 권한을 설정해야 합니다. 안드로이드 위치 권한을 설정하는 방법에 대해 알아보겠습니다.

1. 위치 권한 추가하기

안드로이드 앱에서 위치 정보를 사용하기 위해서는 AndroidManifest.xml 파일에 위치 권한을 추가해야 합니다. 아래의 코드를 추가하여 위치 권한을 요청할 수 있습니다.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

위 코드를 사용하여 정확한 위치 정보를 요청할 수 있습니다. 만약 정확한 위치 정보가 필요하지 않다면 ACCESS_COARSE_LOCATION 권한을 추가할 수도 있습니다.

2. 런타임에서 권한 요청하기

안드로이드 6.0 (API 레벨 23) 이상에서는 앱이 실행 중일 때 사용자에게 권한을 요청해야 합니다. 아래의 코드를 사용하여 런타임에서 위치 권한을 요청할 수 있습니다.

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE);
}

위 코드는 ACCESS_FINE_LOCATION 권한을 요청하는 예시입니다.

3. 권한 처리하기

사용자가 권한 요청에 대한 허용 또는 거부를 선택하면, onRequestPermissionsResult 메서드에서 권한 처리를 해주어야 합니다.

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == REQUEST_CODE) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 권한이 허용된 경우 처리
        } else {
            // 권한이 거부된 경우 처리
        }
    }
}

4. 위치 정보 사용하기

위치 권한이 허용되면, 위치 관련 기능을 사용할 수 있습니다.

위치 서비스를 사용하기 위해서는 FusedLocationProviderClient 를 사용할 수 있으며, 아래의 코드와 같이 위치 정보를 얻을 수 있습니다.

FusedLocationProviderClient fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
fusedLocationClient.getLastLocation()
        .addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                if (location != null) {
                    // 위치 정보를 사용하는 코드
                }
            }
        });

안드로이드에서 위치 권한을 설정하고 사용하는 방법에 대해 간략하게 알아보았습니다.

더 많은 정보를 원하시거나 자세한 내용을 보시려면 안드로이드 개발자 사이트를 참고하시기 바랍니다.