En Android 10, el servicio de sugerencia de cuenta telefónica permite que se muestren sugerencias de cuentas telefónicas a los usuarios cuando hacen una llamada. Por ejemplo, en el caso de los usuarios con un dispositivo con varias tarjetas SIM y tarifas más bajas para las llamadas dentro de la red, este servicio primero identifica el operador del destinatario y, luego, sugiere usar la SIM en la misma red que el destinatario.
El servicio de sugerencias de cuentas de teléfono es opcional y se puede implementar en dispositivos que ejecutan Android 10 o versiones posteriores.
Implementación
Para implementar sugerencias de cuentas de teléfono, implementa un servicio de PhoneAccountSuggestionService
en una app ubicada en /system/priv-app/
. No se consulta el servicio si se implementa más de un PhoneAccountSuggestionService
. El servicio debe declarar el permiso android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE
.
Cuando un usuario realiza una llamada saliente en la que no se configuró la cuenta de teléfono saliente predeterminada ni la cuenta de teléfono preferida para el destinatario, el servicio de telecomunicaciones se vincula a PhoneAccountSuggestionService
para recopilar información sobre las cuentas, se llama a onAccountSuggestionRequest(String number)
y se suspende el proceso de llamada saliente.
PhoneAccountSuggestionService
debe llamar a suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
con el número que muestra onAccountSuggestionRequest(String number)
.
Cuando se llama a suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
, el servicio de telecomunicaciones devuelve una lista de cuentas de teléfono sugeridas. Luego, el marcador debe mostrar la lista de cuentas telefónicas sugeridas para que el usuario elija una y realice la llamada.
PhoneAccountSuggestion
Para hacer sugerencias, usa la clase PhoneAccountSuggestion.
Por ejemplo, si el servicio determina que la persona que llama usa el mismo operador que una de las SIM del dispositivo, debe marcar la cuenta de teléfono con REASON_INTRA_CARRIER
.
Luego, esta información se puede transmitir al usuario en el marcador.
Por ejemplo, en una situación en la que el usuario configuró el dispositivo para usar una SIM de trabajo para todos los contactos de una Cuenta de Google de trabajo, el servicio debe marcar la cuenta de teléfono con REASON_USER_SET
y establecer shouldAutoSelect
como verdadero para permitir que el marcador omita el diálogo de selección y realice automáticamente la llamada con la cuenta de teléfono.
Para obtener información sobre otras sugerencias, consulta PhoneAccountSuggestion
.
Dialer
Cuando la llamada ingresa al estado STATE_SELECT_PHONE_ACCOUNT
, el marcador debe usar la información de PhoneAccountSuggestion
para controlar EXTRA_SUGGESTED_PHONE_ACCOUNTS
.
Inhabilita el servicio
Para personalizar tu implementación para empresas de transporte específicas, puedes habilitar o inhabilitar el servicio con setComponentEnabledSetting
.
El servicio no se consulta si está inhabilitado.
Implementación de la IU del sistema
Según tu implementación, es posible que se requieran cambios en la IU del sistema. Por ejemplo, para permitir que los usuarios especifiquen que todas las llamadas a un contacto específico se realicen desde una cuenta de teléfono específica, debes implementar un flujo de configuración personalizado y una IU de configuración para el dispositivo.
Validación
Para validar tu implementación, ejecuta las siguientes pruebas de CTS: