Android 10에서는 전화 계정 추천 서비스를 사용하여 사용자가 전화를 걸 때 전화 계정 추천이 표시되도록 할 수 있습니다. 예를 들어 SIM이 여러 개이고 네트워크 내 통화 요금이 더 낮은 기기를 가진 사용자의 경우, 이 서비스는 먼저 수신자의 이동통신사를 식별한 후 수신자와 동일한 네트워크의 SIM 사용을 추천합니다.
전화 계정 추천 서비스는 선택사항이며 Android 10 이상을 실행하는 기기에서 구현할 수 있습니다.
구현
전화 계정 추천을 구현하려면 /system/priv-app/
에 있는 앱에서 PhoneAccountSuggestionService
서비스를 하나 구현합니다. 둘 이상의 PhoneAccountSuggestionService
가 구현되면 서비스는 쿼리되지 않습니다. 서비스는 android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE
권한을 선언해야 합니다.
기본 발신 전화 계정과 기본 전화 계정이 모두 수신자에게 설정되어 있지 않은 발신 전화를 사용자가 걸면 통신사 서비스는 PhoneAccountSuggestionService
에 바인딩하여 계정에 관한 정보를 수집하고 onAccountSuggestionRequest(String number)
가 호출되며 발신 전화 처리는 정지됩니다.
PhoneAccountSuggestionService
는 onAccountSuggestionRequest(String number)
에서 반환된 번호로 suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
를 호출해야 합니다.
suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
가 호출되면 통신사 서비스는 추천된 전화 계정 목록을 반환합니다. 그러면 다이얼러에서는 사용자가 전화를 걸 때 선택할 수 있는 추천 전화 계정의 목록을 표시해야 합니다.
PhoneAccountSuggestion
추천하려면 PhoneAccountSuggestion 클래스를 사용하세요.
예를 들어 서비스에서 수신자가 기기의 SIM 중 하나와 동일한 이동통신사를 사용한다고 확인하면 서비스는 REASON_INTRA_CARRIER
로 전화 계정을 표시해야 합니다.
그러면 다이얼러의 사용자에게 정보가 전달될 수 있습니다.
예를 들어 사용자가 업무용 Google 계정의 모든 연락처에 업무용 SIM을 사용하도록 구성했다면 서비스는 전화 계정을 REASON_USER_SET
로 표시하고 shouldAutoSelect
를 true로 설정해야 합니다. 이를 통해 다이얼러에서 선택 대화상자를 우회하고 전화 계정을 사용하여 자동으로 전화를 걸 수 있습니다.
다른 추천에 관한 자세한 내용은 PhoneAccountSuggestion
을 참조하세요.
다이얼러
통화가 STATE_SELECT_PHONE_ACCOUNT
상태가 되면 다이얼러는 PhoneAccountSuggestion
의 정보를 사용하여 EXTRA_SUGGESTED_PHONE_ACCOUNTS
를 처리해야 합니다.
서비스 사용 중지
특정 이동통신사의 구현을 맞춤설정하려면 setComponentEnabledSetting
을 사용하여 서비스를 사용 설정하거나 사용 중지하면 됩니다.
사용 중지되면 서비스는 쿼리되지 않습니다.
시스템 UI 구현
구현에 따라 시스템 UI를 변경해야 할 수 있습니다. 예를 들어 사용자가 특정 연락처의 모든 통화를 특정 전화 계정에서 이루어지도록 지정할 수 있으려면 기기에 맞춤설정된 설정 흐름과 설정 UI를 구현해야 합니다.
유효성 검사
구현을 확인하려면 다음 CTS 테스트를 실행하세요.
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java