In Android 10, il servizio di suggerimenti per gli account telefonici consente di mostrare agli utenti suggerimenti per gli account telefonici quando effettuano una chiamata. Ad esempio, per gli utenti con un dispositivo con più SIM e tariffe più basse per le chiamate all'interno della rete, questo servizio identifica prima l'operatore del destinatario e poi suggerisce di utilizzare la SIM sulla stessa rete del destinatario.
Il servizio di suggerimenti per gli account telefonici è facoltativo e può essere implementato su dispositivi con Android 10 o versioni successive.
Implementazione
Per implementare i suggerimenti per gli account telefonici, implementa un
PhoneAccountSuggestionService
servizio in un'app che si trova in /system/priv-app/. Il servizio non viene interrogato se viene implementato più di un PhoneAccountSuggestionService. Il servizio deve dichiarare l'autorizzazione android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE.
Quando un utente effettua una chiamata in uscita per la quale non è impostato né l'
account telefonico in uscita predefinito
né l'
account telefonico preferito
per il destinatario, il servizio di telecomunicazioni si associa a
PhoneAccountSuggestionService per raccogliere informazioni sugli account, viene chiamato
onAccountSuggestionRequest(String number)
e il processo di chiamata in uscita viene sospeso.
PhoneAccountSuggestionService deve chiamare
suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
con il numero restituito da
onAccountSuggestionRequest(String number).
Quando
suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
viene chiamato, il servizio di telecomunicazioni restituisce un elenco di account telefonici suggeriti. Il dialer deve quindi mostrare all'utente l'elenco degli account telefonici suggeriti tra cui scegliere per effettuare la chiamata.
PhoneAccountSuggestion
Per fornire suggerimenti, utilizza la
classe PhoneAccountSuggestion.
Ad esempio, se il servizio determina che il chiamato utilizza lo stesso operatore di una delle SIM del dispositivo, il servizio deve contrassegnare l'account telefonico con REASON_INTRA_CARRIER.
Queste informazioni possono quindi essere comunicate all'utente nel dialer.
Ad esempio, in una situazione in cui l'utente ha configurato il dispositivo in modo da utilizzare
una SIM di lavoro per tutti i contatti
in un Account Google lavorativo, il servizio deve contrassegnare l'account telefonico con
REASON_USER_SET
e impostare
shouldAutoSelect
su true per consentire all'app Telefono di ignorare la finestra di dialogo di selezione ed effettuare automaticamente
la chiamata utilizzando l'account telefonico.
Per informazioni su altri suggerimenti, vedi
PhoneAccountSuggestion.
Telefono
Quando la chiamata entra nello
STATE_SELECT_PHONE_ACCOUNT
stato, il dialer deve utilizzare le informazioni di
PhoneAccountSuggestion
per gestire
EXTRA_SUGGESTED_PHONE_ACCOUNTS.
Disattivare il servizio
Per personalizzare l'implementazione per operatori specifici, puoi attivare o
disattivare il servizio utilizzando
setComponentEnabledSetting.
Se il servizio è disattivato, non viene interrogato.
Implementazione della UI di sistema
A seconda dell'implementazione, potrebbero essere necessarie modifiche all'interfaccia utente di sistema. Ad esempio, per consentire agli utenti di specificare che tutte le chiamate a un contatto specifico vengano effettuate da un account telefonico specifico, devi implementare un flusso di configurazione personalizzato e un'interfaccia utente delle impostazioni per il dispositivo.
Convalida
Per convalidare l'implementazione, esegui i seguenti test CTS: