Sugerencia de cuenta de teléfono

En Android 10, el servicio de sugerencias de cuentas telefónicas permite mostrar sugerencias de cuentas telefónicas a los usuarios cuando realizan una llamada. Por ejemplo, para usuarios con un dispositivo con múltiples SIM y tarifas más bajas para llamadas dentro de la red, este servicio primero identifica el operador del destinatario y luego sugiere usar el SIM en la misma red que el destinatario.

El servicio de sugerencia de cuenta de teléfono es opcional y se puede implementar en dispositivos con Android 10 o superior.

Implementación

Para implementar sugerencias de cuentas telefónicas, implemente un servicio PhoneAccountSuggestionService en una aplicación que se encuentra en /system/priv-app/ . El servicio no se consulta 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 ni la cuenta de teléfono saliente predeterminada ni la cuenta de teléfono preferida están configuradas para la persona que llama, el servicio de telecomunicaciones se une a PhoneAccountSuggestionService para recopilar información sobre las cuentas, se llama a onAccountSuggestionRequest(String number) y la llamada saliente se suspende el proceso.

PhoneAccountSuggestionService debe llamar a suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions) con el número devuelto por onAccountSuggestionRequest(String number) .

Cuando se suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions) , el servicio de telecomunicaciones devuelve una lista de cuentas telefónicas sugeridas. Luego, el marcador debe mostrar la lista de cuentas telefónicas sugeridas para que el usuario elija para realizar la llamada.

Sugerencia de cuenta telefónica

Para hacer sugerencias, use la clase PhoneAccountSuggestion . Por ejemplo, si el servicio determina que el destinatario de la llamada está en el mismo operador que una de las tarjetas SIM del dispositivo, el servicio debe marcar la cuenta del teléfono con REASON_INTRA_CARRIER . Esta información se puede transmitir al usuario en el marcador.

Por ejemplo, en una situación en la que el usuario ha configurado el dispositivo para usar una tarjeta SIM del trabajo para todos los contactos en una cuenta de trabajo de Google, el servicio debe marcar la cuenta del teléfono con REASON_USER_SET y establecer shouldAutoSelect en verdadero para permitir que el marcador omita el cuadro de diálogo de selección. y realice automáticamente la llamada usando la cuenta del teléfono.

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

Marcador

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

Deshabilitar el servicio

Para personalizar su implementación para operadores específicos, puede habilitar o deshabilitar el servicio usando setComponentEnabledSetting . El servicio no se consulta si está deshabilitado.

Implementación de la interfaz de usuario del sistema

Dependiendo de su implementación, es posible que se requieran cambios en la interfaz de usuario del sistema. Por ejemplo, para permitir que los usuarios especifiquen que todas las llamadas a un contacto específico se realizan desde una cuenta de teléfono específica, debe implementar un flujo de configuración personalizado y una interfaz de usuario de configuración para el dispositivo.

Validación

Para validar su implementación, ejecute las siguientes pruebas CTS: