No Android 10, o serviço de sugestão de conta telefônica permite que essas sugestões sejam exibidas aos usuários quando eles fizerem uma chamada. Por exemplo, para usuários com um dispositivo com vários chips e taxas mais baixas para chamadas na mesma rede, esse serviço primeiro identifica a operadora do chamado e, em seguida, sugere o uso do chip na mesma rede.
O serviço de sugestão de conta de smartphone é opcional e pode ser implementado em dispositivos com o Android 10 ou versões mais recentes.
Implementação
Para implementar sugestões de contas de smartphone, implemente um
serviço PhoneAccountSuggestionService
em um app localizado em /system/priv-app/
. O serviço não será
consultado se mais de um PhoneAccountSuggestionService
for implementado. O
serviço precisa declarar a
permissão android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE
.
Quando um usuário faz uma chamada em que nem a
conta de telefone de saída padrão
nem a
conta de telefone preferencial
estão definidas para o recebedor da chamada, o serviço de telecomunicações é vinculado ao
PhoneAccountSuggestionService
para coletar informações sobre as contas,
onAccountSuggestionRequest(String number)
é chamado e o processo de chamada de saída é suspenso.
PhoneAccountSuggestionService
precisa chamar
suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
com o número retornado por
onAccountSuggestionRequest(String number)
.
Quando
suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
é chamado, o serviço de telecomunicações retorna uma lista de contas de telefone sugeridas. O
discador precisa mostrar a lista de contas telefônicas sugeridas para que o usuário
escolha para fazer a chamada.
Sugestão de conta de telefone
Para fazer sugestões, use a classe
PhoneAccountSuggestion.
Por exemplo, se o serviço determinar que o chamado está na mesma operadora de um
dos cartões SIM no dispositivo, o serviço vai marcar a conta do smartphone com
REASON_INTRA_CARRIER
.
Essas informações podem ser transmitidas ao usuário no discador.
Por exemplo, em uma situação em que o usuário configurou o dispositivo para usar
um SIM de trabalho para todos os contatos
em uma Conta do Google do trabalho, o serviço precisa marcar a conta do telefone com
REASON_USER_SET
e definir
shouldAutoSelect
como verdadeiro para permitir que o discador ignore a caixa de diálogo de seleção e faça a chamada automaticamente
usando a conta do telefone.
Para informações sobre outras sugestões, consulte
PhoneAccountSuggestion
.
Telefone
Quando a chamada entra no estado
STATE_SELECT_PHONE_ACCOUNT
, o discador precisa usar as informações de
PhoneAccountSuggestion
para processar
EXTRA_SUGGESTED_PHONE_ACCOUNTS
.
Desativar o serviço
Se quiser personalizar sua implementação para operadoras específicas, ative ou
desative o serviço usando
setComponentEnabledSetting
.
O serviço não é consultado se estiver desativado.
Implementação da interface do sistema
Dependendo da implementação, pode ser necessário fazer mudanças na interface do sistema. Por exemplo, para permitir que os usuários especifiquem que todas as ligações para um contato específico sejam feitas de uma conta de telefone específica, implemente um fluxo de configuração e uma interface de configurações personalizadas para o dispositivo.
Validação
Para validar sua implementação, execute os seguintes testes de CTS: