[android] 주소록 권한

안드로이드 앱을 개발할 때, 사용자의 주소록을 읽거나 수정해야 할 때가 있을 수 있습니다. 이러한 경우 해당 앱이 주소록에 접근하기 위해서는 주소록 액세스 권한이 필요하게 됩니다. 안드로이드 시스템은 사용자의 개인 정보 보호를 위해, 주소록 액세스 권한을 엄격하게 관리하고 있습니다. 이 글에서는 안드로이드 앱에서 주소록 액세스 권한을 요청하고 관리하는 방법에 대해 알아보겠습니다.

주소록 액세스 권한 요청

안드로이드 앱이 주소록에 접근하기 위해서는 android.permission.READ_CONTACTS 또는 android.permission.WRITE_CONTACTS와 같은 안드로이드 퍼미션(권한)을 요청해야 합니다. 사용자 기기에서 주소록 액세스 권한을 요청하는 단계는 다음과 같습니다.

// 주소록 읽기 권한 요청
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_READ_CONTACTS);
}

위 코드에서 ContextCompat.checkSelfPermission() 함수를 사용하여 앱이 주소록을 읽을 권한이 있는지 확인하고, 권한이 없는 경우 ActivityCompat.requestPermissions()를 통해 사용자에게 권한을 요청합니다.

사용자 권한 요청 처리

사용자가 앱에서 주소록 액세스 권한을 요청하면, 시스템은 권한을 허용하거나 거부하도록 요청을 보여줍니다. 사용자가 권한을 부여하거나 거부한 후에는 권한 처리 결과를 다음과 같은 콜백 함수에서 확인할 수 있습니다.

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(requestCode == REQUEST_READ_CONTACTS) {
        if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 사용자가 권한을 허용한 경우
            // 주소록 액세스 권한을 사용하여 작업을 계속합니다.
        } else {
            // 사용자가 권한을 거부한 경우
            // 앱에서 주소록 액세스를 수행할 수 없는 처리를 수행합니다.
        }
    }
}

위 코드에서 onRequestPermissionsResult() 함수를 사용하여 사용자의 권한 부여 결과를 처리합니다. 사용자가 권한을 허용했을 때와 거부했을 때 각각에 대한 처리를 구현할 수 있습니다.

주소록 액세스 권한 확인

앱이 주소록 액세스 권한을 가지고 있는지 확인하는 방법은 다음과 같습니다.

// 주소록 액세스 권한 확인
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
    // 주소록 액세스 권한이 있는 경우
    // 주소록을 읽거나 수정하는 작업을 수행합니다.
} else {
    // 주소록 액세스 권한이 없는 경우
    // 사용자에게 권한을 요청하는 처리를 수행합니다.
}

결론

안드로이드 앱에서 주소록 액세스 권한을 요청하고 관리하는 방법에 대해 알아보았습니다. 사용자의 개인 정보를 보호하기 위해 주소록 액세스 권한을 요청할 때에는 사용자에게 명확하게 권한 사용 목적을 안내하고, 사용자의 권한 부여 여부에 대한 처리를 꼼꼼히 구현해야 합니다.


관련 문서: 안드로이드 공식 문서 - 주소록 액세스 권한