Sugestão de conta telefônica

No Android 10, o serviço de sugestão de conta telefônica permite que sugestões de contas telefônicas sejam mostradas aos usuários quando eles fazem uma ligação. Por exemplo, para usuários com um dispositivo com vários chips e tarifas mais baixas para chamadas na mesma rede, esse serviço primeiro identifica a operadora do destinatário e sugere o uso do chip na mesma rede.

O serviço de sugestão de conta de telefone é opcional e pode ser implementado em dispositivos com Android 10 ou mais recente.

Implementação

Para implementar sugestões de contas de telefone, 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 padrão para chamadas nem a conta de telefone preferida estão definidas para o destinatário, o serviço de telecomunicações se vincula a PhoneAccountSuggestionService para coletar informações sobre as contas, onAccountSuggestionRequest(String number) é chamado, e o processo de chamada é 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. Em seguida, o discador precisa mostrar a lista de contas telefônicas sugeridas para o usuário escolher e fazer a ligação.

PhoneAccountSuggestion

Para fazer sugestões, use a classe PhoneAccountSuggestion. Por exemplo, se o serviço determinar que o destinatário está na mesma operadora de um dos SIMs no dispositivo, ele vai marcar a conta de telefone 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 chip de trabalho para todos os contatos em uma Conta do Google de trabalho, o serviço precisa marcar a conta de telefone com REASON_USER_SET e definir shouldAutoSelect como "true" para permitir que o discador ignore a caixa de diálogo de seleção e faça automaticamente a chamada usando a conta de 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

Para 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 sua implementação, talvez seja necessário fazer mudanças na interface do sistema. Por exemplo, para permitir que os usuários especifiquem que todas as chamadas para um contato específico sejam feitas de uma conta de telefone específica, é necessário implementar um fluxo de configuração personalizado e uma interface de configurações para o dispositivo.

Validação

Para validar sua implementação, execute os seguintes testes do CTS: