スマートフォン アカウントの候補

Android 10 では、スマートフォン アカウントの提案サービスにより、発信時にスマートフォン アカウントの候補を表示できます。たとえば、複数の SIM が挿入されたデバイスでネットワーク内通話率が低い場合、このサービスはまず着信先の携帯通信会社を特定し、着信先と同じネットワーク上にある SIM の使用を提案します。

スマートフォン アカウントの提案サービスは任意であり、Android 10 以降を搭載したデバイスに実装できます。

実装

スマートフォン アカウントの提案サービスを実装するには、/system/priv-app/ にあるアプリに PhoneAccountSuggestionService サービスを 1 つ実装します。複数の 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 の 1 枚が着信先の携帯通信会社のものであると判断した場合は、該当のスマートフォン アカウントに 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 テストを実施します。