기본 핸들러에서만 사용되는 권한

통화 기록 읽기, SMS 메시지 전송과 같은 몇 가지 핵심적인 기기 기능은 민감한 사용자 정보 액세스 권한이 필요합니다. 사용자 개인 정보를 보호하고 사용자가 기기의 앱에 제공하는 정보에 관해 더 많은 제어 권한을 갖도록 Google Play는 통화 및 메시지 관련 권한 그룹에 대한 앱의 액세스를 제한합니다.

Google Play 스토어에 앱을 배포하고 통화 기록 및 SMS 메시지와 관련된 민감한 사용자 정보에 액세스하려는 경우 앱이 Play Console 고객센터에 나와 있는 예외 사례 중 하나를 충족하지 않는 한, 그 권한과 관련된 핵심 기기 기능을 위한 사용자의 기본 핸들러로 등록되어야 합니다. 예를 들어 통화 관련 권한에 액세스하려면 앱이 예외 사례를 충족하지 않는 한, 앱을 사용자의 기본 휴대전화 핸들러 또는 어시스턴트 핸들러로 등록해야 합니다.

이 가이드에서는 사용자가 Android 기반 기기에서 기본 핸들러에 액세스하는 방법을 간략히 설명합니다. 그런 다음 앱이 기본 핸들러가 되기 위한 자격을 갖추기 위해 충족해야 하는 요구사항을 검토합니다. 마지막으로 기본 핸들러가 되기 위해 사용자의 동의를 받는 과정을 안내합니다.

Play 스토어에서 제공되는 앱의 권한 처리 방법과 기본 핸들러에 관해 자세히 알아보려면 권한 정책 가이드를 참고하세요.

기본 핸들러 보기 및 변경

Android에서는 사용자가 전화 걸기, SMS 메시지 전송, 보조 기술 기능 제공과 같은 여러 핵심 사용 사례를 위한 기본 핸들러를 설정할 수 있습니다.

Android의 설정 앱에는 그림 1과 같이 기기의 핵심 기능을 위한 기본 핸들러로 현재 어떤 앱을 사용 중인지 보여주는 화면이 있습니다. 이 화면에서 사용자는 그림 2와 같이 특정 기능의 기본 핸들러를 변경할 수 있습니다.

기본 앱 설정의 화면 캡처
그림 1. 기기의 기본 핸들러 목록을 보여주는 시스템 설정 화면
기본 SMS 앱 설정의 화면 캡처
그림 2. 기본 SMS 핸들러를 변경하는 방법을 보여주는 시스템 설정 화면

기본 핸들러 요구사항 준수

앱이 기본 핸들러로 사용되는 동안 액세스하는 민감한 사용자 정보를 감안할 때, 앱은 다음 Play 스토어 등록정보와 핵심 기능 요구사항을 충족하지 않는 한 기본 핸들러가 될 수 없습니다.

  • 앱은 기본 핸들러 역할에 맞는 기능을 실행할 수 있어야 합니다. 예를 들어 기본 SMS 핸들러는 SMS를 보낼 수 있어야 합니다.
  • 앱은 개인정보처리방침을 제공해야 합니다.
  • 앱은 Play 스토어 설명에서 핵심 기능을 명확하게 알려야 합니다. 예를 들어 기본 휴대전화 핸들러는 설명에 휴대전화 관련 기능을 설명해야 합니다.
  • 앱은 사용 사례에 적합한 권한을 선언해야 합니다. 지정한 핸들러로 선언할 수 있는 권한에 관한 자세한 내용은 Play Console 고객센터의 SMS 또는 통화 기록 권한 그룹 사용 관련 도움말을 참조하세요.
  • 앱은 핸들러와 관련된 권한을 요청하기 전에 기본 핸들러가 되어도 되는지 묻는 메시지를 표시해야 합니다. 예를 들어 앱은 READ_SMS 권한을 요청하기 전에 기본 SMS 핸들러가 되겠다고 요청해야 합니다.

앱이 기본 핸들러가 되기 위한 각 요구사항을 준수하는지 확인했으면 로직을 추가하여 그림 3에 표시된 것처럼 대화상자를 표시할 수 있습니다. 이 대화상자는 사용자에게 그 앱을 특정 사용 사례의 기본 핸들러로 지정할지 물어봅니다.

사용자 표시 대화상자의 화면 캡처
그림 3. 사용자에게 기기의 기본 SMS 핸들러를 변경할지 묻는 메시지

다음 코드 예는 사용자에게 기기의 기본 SMS 핸들러를 변경하도록 요청하는 메시지를 표시하는 데 필요한 로직을 보여줍니다.

Kotlin

val setSmsAppIntent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
setSmsAppIntent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName)
startActivityForResult(setSmsAppIntent, your-result-code)

Java

Intent setSmsAppIntent =
        new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
setSmsAppIntent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
        getPackageName());
startActivityForResult(setSmsAppIntent, your-result-code);