In Android 10, il servizio di suggerimenti per gli account di telefoni consente di mostrare agli utenti suggerimenti per gli account di telefoni quando effettuano una chiamata. Ad esempio, per gli utenti con un dispositivo con più SIM e tariffe inferiori per le chiamate all'interno della rete, questo servizio identifica prima l'operatore del chiamato e poi suggerisce di utilizzare la SIM sulla stessa rete del chiamato.
Il servizio di suggerimento per gli account telefonici è facoltativo e può essere implementato su dispositivi con Android 10 o versioni successive.
Implementazione
Per implementare i suggerimenti per l'account telefonico, implementa un servizio
PhoneAccountSuggestionService
in un'app che si trova in /system/priv-app/
. Il servizio non viene sottoposto a query se è 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 in cui né il
account telefonico in uscita predefinito
né il
account telefonico preferito
è impostato per il chiamante, il servizio di telecomunicazioni si lega a
PhoneAccountSuggestionService
per raccogliere informazioni sugli account, viene chiamato
onAccountSuggestionRequest(String number)
e la procedura di chiamata in uscita viene sospesa.
PhoneAccountSuggestionService
deve chiamare
suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
con il numero restituito da
onAccountSuggestionRequest(String number)
.
Quando viene chiamato suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
, il servizio di telecomunicazioni restituisce un elenco di account telefonici suggeriti. Il telefono deve quindi visualizzare l'elenco di account telefonici suggeriti tra cui l'utente può scegliere per effettuare la chiamata.
PhoneAccountSuggestion
Per fornire suggerimenti, utilizza la classe
PhoneAccountSuggestion.
Ad esempio, se il servizio determina che il chiamante fa parte dello stesso operatore di una
delle SIM nel dispositivo, il servizio dovrebbe contrassegnare l'account telefonico con
REASON_INTRA_CARRIER
.
Queste informazioni possono quindi essere comunicate all'utente nel tastierino.
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 di lavoro, il servizio deve contrassegnare l'account dello smartphone con
REASON_USER_SET
e impostare
shouldAutoSelect
su true per consentire al tastierino di bypassare la finestra di dialogo di selezione e effettuare automaticamente
la chiamata utilizzando l'account dello smartphone.
Per informazioni su altri suggerimenti, consulta
PhoneAccountSuggestion
.
Telefono
Quando la chiamata entra nello stato
STATE_SELECT_PHONE_ACCOUNT
, il tastierino 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 è disattivato, non viene eseguita alcuna query sul servizio.
Implementazione dell'interfaccia utente 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 vengono effettuate da uno specifico account telefonico, devi implementare un'interfaccia utente per il flusso di configurazione e le impostazioni personalizzate per il dispositivo.
Convalida
Per convalidare l'implementazione, esegui i seguenti test CTS:
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java