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 con un dispositivo con varias 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 sugerencia de cuenta telefónica es opcional y se puede implementar en dispositivos que ejecutan Android 10 o versiones posteriores.

Implementación

Para implementar sugerencias de cuentas telefónicas, implementa un PhoneAccountSuggestionService servicio 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 establece ni la cuenta telefónica saliente predeterminada ni la cuenta telefónica 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 suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions) se llama, el servicio de telecomunicaciones muestra una lista de cuentas telefónicas sugeridas. Luego, el marcador debe mostrar la lista de cuentas telefónicas sugeridas para que el usuario elija una para realizar la llamada.

PhoneAccountSuggestion

Para hacer sugerencias, usa la clase PhoneAccountSuggestion. Por ejemplo, si el servicio determina que el destinatario está en el mismo operador que una de las SIM del dispositivo, el servicio debe marcar la cuenta telefónica 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 laboral, el servicio debe marcar la cuenta telefónica 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 telefónica.

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

Dialer

Cuando la llamada ingresa al STATE_SELECT_PHONE_ACCOUNT estado, el marcador debe usar la información de PhoneAccountSuggestion para controlar EXTRA_SUGGESTED_PHONE_ACCOUNTS.

Inhabilitar el servicio

Para personalizar tu implementación para operadores específicos, puedes habilitar o inhabilitar el servicio con setComponentEnabledSetting. No se consulta el servicio 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 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: