En dispositivos con Android 15 o versiones posteriores, puedes hacer lo siguiente:
implementar la selección de dominio
entre el servicio IMS y los servicios heredados a través de redes con conmutación de circuitos
la API del sistema DomainSelectionService
DomainSelectionService
es una interfaz bien definida entre la plataforma de Android y un proveedor
implementación de la selección de dominios. Esta interfaz permite que el proveedor implemente
proporcionar información de señalización, como el dominio desde el que se realizan las llamadas y los SMS
y la preferencia de tipo de red en el escaneo de red de la plataforma.
Figura 1: Diagrama de arquitectura de la función de selección de dominios
Ejemplos y fuente
Android proporciona una implementación de referencia para la función de selección de dominios en
AOSP en TelephonyDomainSelectionService
. Para obtener información
documentación para la API de DomainSelectionService
, consulta
DomainSelectionService
y las otras clases en la API.
Implementación
Para implementar la función de selección de dominio en un dispositivo Android, debes hacer lo siguiente: pasos son obligatorios:
Crea una app de selección de dominios. El servicio debe definirse en el
AndroidManifest.xml
.Agrega una configuración a la superposición de dispositivos para permitir que la plataforma se vincule con la Implementación de
DomainSelectionService
.Admite las interfaces de HAL de radio requeridas para la función de selección de dominio.
En esta sección, se proporcionan más detalles sobre estos pasos.
Agrega una entrada de servicio en AndroidManifest.xml
Para que la app de selección de dominio registre el servicio de DomainSelectionService
con el framework, agrega una entrada de servicio en el archivo de manifiesto con el siguiente comando
formato:
<service
android:name="com.example.domainselection.DomainSelectionService"
android:directBootAware="true"
android:persistent="true"
…
android:permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
…
<intent-filter>
<action android:name="android.telephony.DomainSelectionService"/>
</intent-filter>
…
</service>
La definición del servicio en AndroidManifest.xml
debe establecer lo siguiente:
atributos para que opere la función de selección de dominio.
directBootAware="true"
: Permite que el usuario descubra y ejecute el servicio. la telefonía antes de que el usuario desbloquee el dispositivo. El servicio no tiene acceso encriptado por el dispositivo antes de que el usuario lo desbloquee. Para ver más información, consulta Compatibilidad con el modo de inicio directo y Encriptación basada en archivos.persistent="true"
: Permite que el servicio se ejecute de manera persistente y no se ejecute. que el sistema finaliza para recuperar memoria. Este atributo funciona solo si el atributo se compila como una aplicación del sistema.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: Asegura que solo un proceso con el permisoBIND_DOMAIN_SELECTION_SERVICE
que se le otorguen pueden vincularse a la app. Esto evita que una app fraudulenta se vincule con servicio, ya que solo las aplicaciones del sistema pueden obtener el permiso en un framework de aplicaciones.
El servicio también debe especificar el elemento intent-filter
con el
android.telephony.DomainSelectionService
. Esto permite que el framework encuentre
el servicio DomainSelectionService
Cómo definir la configuración en la superposición de dispositivos
Para que la plataforma se vincule de forma segura al servicio DomainSelectionService
, agrega
la siguiente configuración a la superposición de dispositivos:
config_domain_selection_service_component_name
: El elemento nombre de componente (una cadenaComponentName
acoplada) para el Servicio deDomainSelectionService
Android no admite apps que puedan descargarse de terceros
DomainSelectionService
, la app de selección de dominio debe ser una
app del sistema que reside en /system_ext/priv-app/
o /product/priv-app/
carpeta. El framework verifica si el nombre del paquete de la implementación
coincide con el valor de superposición de dispositivos para garantizar que solo las apps de confianza preinstaladas
de un recurso.
Cómo admitir interfaces HAL de radio
Para habilitar la función de selección de dominio, admite la siguiente HAL de radio requerida interfaces:
-
void setEmergencyMode(int serial, EmergencyMode emcModeType); void triggerEmergencyNetworkScan(int serial, EmergencyNetworkScanTrigger request); void cancelEmergencyNetworkScan(int serial, boolean resetScan); void exitEmergencyMode(int serial);
-
void emergencyNetworkScanResult(RadioIndicationType type, EmergencyRegResult result);
Validación
Para probar que el framework de telefonía responda correctamente al
DomainSelectionService
, ejecuta las pruebas de CTS en
DomainSelectionServiceTestOnMockModem