No Android 10, o serviço de sugestão de conta telefônica permite que essas sugestões sejam mostradas 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 rede, esse serviço primeiro identifica a operadora do recebedor da chamada e sugere o uso do chip na mesma rede.
O serviço de sugestão de conta telefônica é opcional e pode ser implementado em dispositivos com o Android 10 ou mais recente.
Implementação
Para implementar sugestões de conta telefônica, implemente um
PhoneAccountSuggestionService
serviço 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 ligação efetuada em que nem a
conta telefônica de saída padrão
nem a
conta telefônica preferencial
estão definidas para o recebedor da chamada, o serviço de telecomunicações se vincula ao
PhoneAccountSuggestionService para coletar informações sobre as contas.
onAccountSuggestionRequest(String number)
é chamado, e o processo de ligação efetuada é 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 telefônicas sugeridas. Em seguida, o app Telefone precisa mostrar a lista de contas telefônicas sugeridas para o usuário escolher e fazer a chamada.
PhoneAccountSuggestion
Para fazer sugestões, use a
classe PhoneAccountSuggestion.
Por exemplo, se o serviço determinar que o recebedor da chamada está na mesma operadora que um dos chips no dispositivo, ele deverá marcar a conta telefônica com REASON_INTRA_CARRIER.
Essas informações podem ser transmitidas ao usuário no app Telefone.
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 de trabalho, o serviço precisa marcar a conta telefônica com
REASON_USER_SET
e definir
shouldAutoSelect
como "true" para permitir que o app Telefone ignore a caixa de diálogo de seleção e faça a chamada automaticamente
usando a conta telefônica.
Para informações sobre outras sugestões, consulte
PhoneAccountSuggestion.
Telefone
Quando a chamada entra no
STATE_SELECT_PHONE_ACCOUNT
estado, o app Telefone precisa usar as informações de
PhoneAccountSuggestion
para processar
EXTRA_SUGGESTED_PHONE_ACCOUNTS.
Desativar o serviço
Para personalizar a implementação para operadoras específicas, ative ou
desative o serviço usando
setComponentEnabledSetting.
O serviço não será consultado se estiver desativado.
Implementação da interface do sistema
Dependendo da implementação, mudanças na interface do sistema podem ser necessárias. Por exemplo, para permitir que os usuários especifiquem que todas as chamadas para um contato específico sejam feitas de uma conta telefônica específica, é necessário implementar um fluxo de configuração e uma interface de configurações personalizados para o dispositivo.
Validação
Para validar a implementação, execute os seguintes testes do CTS: