En Android 10, el servicio de sugerencia de cuentas de teléfono permite mostrar sugerencias de cuentas de teléfono a los usuarios al realizar una llamada. Por ejemplo, para los 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 de la persona que llama y luego sugiere usar la SIM en la misma red que la persona que llama.
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 de teléfono, implemente un servicio PhoneAccountSuggestionService
en una aplicación ubicada 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 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 realiza la llamada saliente. se suspende el proceso.
PhoneAccountSuggestionService
debe llamar suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
con el número devuelto por onAccountSuggestionRequest(String number)
.
Cuando se llama 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.
TeléfonoCuentaSugerencia
Para hacer sugerencias, utilice la clase PhoneAccountSuggestion . Por ejemplo, si el servicio determina que la persona que llama está en el mismo proveedor que una de las tarjetas SIM del dispositivo, el servicio debe marcar la cuenta del teléfono con REASON_INTRA_CARRIER
. Esta información puede luego transmitirse 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 realizar automáticamente la llamada utilizando 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 a los usuarios especificar que todas las llamadas a un contacto específico se realicen 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:
-
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java
-
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java