Sugerencia de cuenta telefónica

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, para los usuarios que tienen un dispositivo con varias SIM y tarifas más bajas para las llamadas intrarred, este servicio primero identifica al operador del llamado y, luego, sugiere usar la SIM en la misma red que el llamado.

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 PhoneAccountSuggestionService en una app que se encuentre 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 llamado, 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 muestra 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 y realice la llamada.

PhoneAccountSuggestion

Para hacer sugerencias, usa la clase PhoneAccountSuggestion. Por ejemplo, si el servicio determina que el llamado está en el mismo operador que una de las SIM del dispositivo, el servicio debe marcar la cuenta de teléfono con REASON_INTRA_CARRIER. Luego, esta información se puede transmitir al usuario en el dialer.

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 la llamada automáticamente con la cuenta de teléfono.

Para obtener información sobre otras sugerencias, consulta PhoneAccountSuggestion.

Dialer

Cuando la llamada entra en el 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 operadores específicos, puedes habilitar o disabilitar el servicio con setComponentEnabledSetting. Si está inhabilitado, no se consulta el servicio.

Implementación de la IU del sistema

Según tu implementación, es posible que se deban realizar 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 y una IU de configuración personalizados para el dispositivo.

Validación

Para validar tu implementación, ejecuta las siguientes pruebas de CTS: