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, en el caso de los usuarios que tienen un dispositivo con varias SIM y tarifas más bajas para las llamadas dentro de la red, este servicio primero identifica al 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 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 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 muestra una lista de cuentas de teléfono sugeridas. El marcador debe mostrar la lista de cuentas telefónicas sugeridas que el usuario puede elegir para realizar la llamada.

PhoneAccountSuggestion

Para hacer sugerencias, usa la clase PhoneAccountSuggestion. Por ejemplo, si el servicio determina que el llamador 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

Si quieres personalizar tu implementación para operadores específicos, puedes habilitar o inhabilitar 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 realizan desde una cuenta telefónica 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: