El módulo CellBroadcast reduce los esfuerzos repetitivos para los OEM (lo que, a su vez, reduce la fragmentación en todo el ecosistema de Android y brinda el comportamiento de los usuarios finales) y ayuda a optimizar las pruebas de los operadores y certificación para cumplir con los requisitos relacionados con CellBroadcast (porque el código no puede modificados por OEM). Este módulo se puede actualizar, por lo que puede recibir actualizaciones para fuera del ciclo normal de lanzamiento de Android.
Formato del paquete
El módulo CellBroadcast consta de los siguientes servicios y apps.
El servicio CellBroadcastService admite la decodificación de SMS de CellBroadcast. geovallado para alertas de emergencia inalámbricas (WEA) 3.0, verificaciones de duplicación de mensajes, y transmitir mensajes a las aplicaciones. Se trata de una segmentación geográfica de uno a varios servicio de mensajería con geovallado diseñado para enviar mensajes a múltiples usuarios de teléfonos, en un área definida, al mismo tiempo. El servicio se define según el comité de GSM de la ETSI 3GPP y forma parte del estándares de telecomunicaciones.
La app CellBroadcastReceiver es una app predeterminada del sistema que controla alertas de emergencia y de emergencia (como alertas AMBER y alertas presidenciales) y presenta la información a los usuarios finales según el operador y la región reglamentaciones.
Flujo de mensajes de emisión móvil
En la siguiente figura, se muestra el flujo de mensajes de CellBroadcast.
Figura 1: Flujo de mensajes de CellBroadcastReceiver
La capa de interfaz de radio (RIL) notifica a
InBoundSMSHandler
sobre una conexión CDMA/GSM. SMS de emisión móvil.El framework reenvía el SMS de CellBroadcast al módulo de CBS para analizar y procesar el mensaje entrante.
Una vez procesado el mensaje, CellBroadcastService reenvía el intent a la app CellBroadcastReceiver predeterminada del sistema.
La app de CellBroadcastReceiver muestra el mensaje al usuario.
Formato del módulo
CellBroadcastService y app de CellBroadcastReceiver se incluyen en un
único archivo APEX
(com.android.cellbroadcast
), que está disponible para los dispositivos que ejecutan
Android 11 o una versión posterior El módulo incluye código en
package/app/CellBroadcastReceiver
y migra las clases del framework existentes a
packages/modules/CellBroadcastService
Dependencias del módulo
El módulo CellBroadcast interactúa con el framework solo mediante el uso estable
@SystemApi
(sin APIs de @hide
) y depende de las siguientes bibliotecas estáticas.
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
Puedes personalizar la configuración con superposiciones de recursos en el entorno de ejecución (RRO).
Configuración de permisos
El módulo CellBroadcast está firmado con una firma de Google en lugar de una plataforma
firma, lo que significa que el módulo pierde acceso a los permisos de firma.
En cambio, Android 11 define la nueva firma
permiso com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
dentro del módulo CellBroadcast; solo los paquetes del módulo pueden obtener
permiso, ya que están firmadas con la misma clave. Este permiso le permite a la
para tener acceso completo a la base de datos dentro de la app
CellBroadcastService.
La plataforma otorga al entorno de ejecución android.permission.READ_CELL_BROADCASTS
permiso a la app de SMS predeterminada del sistema para acceder al historial de emergencias
alertas.
Integrar el módulo CellBroadcast
Esta sección describe cómo integrar el módulo CellBroadcast.
Cómo realizar la integración con Configuración
Puedes decidir dónde integrar la configuración de CellBroadcast en la aplicación de configuración
(Los usuarios finales acceden a la página de configuración de CellBroadcast desde Configuración >
Aplicaciones y Notificaciones > Avanzado > Alerta de emergencia). Cómo lanzar
la app CellBroadcastReceiver desde la app de Configuración, cambia lo siguiente
estableciendo parámetros de configuración con el nombre del paquete
com.android.cellbroadcastreceiver
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
Cómo realizar la integración con apps de mensajería
Puedes integrar el vínculo de una app en apps de mensajería para abrir CellBroadcast
historial de mensajes. En la app de mensajería de Android, esto se integró en
Configuración > Avanzado > Alerta de emergencia. Para integrar un vínculo en
tu propia app de mensajería, definir la ruta en la app de mensajería y configurar el
nombre de componente para el módulo CellBroadcast como
com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
Cómo realizar la integración con la bandeja de entrada de SMS
Para habilitar la visualización de mensajes de CellBroadcast en la aplicación de mensajería predeterminada, haz lo siguiente: y anula la siguiente configuración con una superposición de recursos en tiempo de ejecución.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Como otorgar permisos está fuera del alcance del módulo CellBroadcast,
debes otorgar el permiso AppOpsManager.OP_WRITE_SMS
a la emisión móvil
para brindar asistencia de extremo a extremo. Para una implementación de referencia de AOSP, haz lo siguiente:
consulta esta SmsApplication.java
parche.
Inicia la app de CellBroadcastReceiver
La app de CellBroadcastReceiver tiene los siguientes puntos de inicio.
Menú de la app de Configuración
Una app (incluidas las de terceros), como una app de mensajes que vincule a Historial de mensajes de difusión móvil
Un ícono de inicio desde la pantalla principal de Android agregado por el OEM (opcional) Para obtener más información, consulta Agrega un ícono de lanzamiento.
Configuración de la app de CellBroadcastReceiver
Las siguientes capturas de pantalla muestran el menú de configuración de la app CellBroadcastReceiver.
Figura 2: Menú de configuración de la app de CellBroadcastReceiver
Figura 3: Pantalla del historial de alertas de emergencia
Agrega íconos de inicio
Puedes habilitar el acceso al historial de mensajes de CellBroadcast desde el selector de aplicaciones y a través de tus propios iconos de inicio.
Para habilitar el acceso al historial de mensajes desde el selector de aplicaciones, anula el la siguiente configuración con una RRO.
<item type="bool" name="show_message_history_in_launcher" />
Para anular el ícono predeterminado de AOSP, anula la siguiente configuración con una RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Habilitar el código secreto de CMAS
Para habilitar el código secreto del CMAS, *#*#CMAS#*#* (*#*#2627#*#* en el
teclado), una app de Teléfono debe escuchar el código especial en forma de
*#*#code#*#* y controlar el código con el método público
sendDialerSpecialCode
Requisito de información del área: Canal 50
El canal 50 es un canal especial para que los operadores transmitan (excepto MTN en Sudáfrica). Para este canal, transmitir mensajes no generan un diálogo ni una notificación. En cambio, transmite mensajes aparecen en el estado de SIM del menú de configuración o en la barra de estado (para (por ejemplo, mostrar un código postal).
La implementación de CellBroadcastService de Android proporciona compatibilidad con la las siguientes APIs en el servicio de emisión móvil para las apps de configuración y SysUI obtener la información del canal 50 de la transmisión. Para implementar esto, haz lo siguiente:
Registrar la transmisión
android.telephony.action.AREA_INFO_UPDATED
y anularla el nombre del paquete del receptorconfig_area_info_receiver_packages
a través de una RRO.Vincular a
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Debido a que la configuración y las apps de SysUI están fuera del alcance de CellBroadcast debes implementar los cambios en la IU del sistema o en la app de Configuración para para brindar asistencia de extremo a extremo. Para una implementación de referencia, consulta la Configuración de CellBroadcastService de la app.
Personalización
No puedes modificar directamente el código fuente del módulo CellBroadcast, pero
pueden usar superposiciones de recursos de tiempo de ejecución
(RRO) a
habilitar (o inhabilitar) parámetros
(por ejemplo, puedes personalizar el color de las notificaciones y
dimensiones en los diálogos). Para anular los valores predeterminados de los parámetros utilizados en
el módulo CellBroadcast, cambia el nombre del paquete de destino a
com.android.cellbroadcastreceiver
A su vez:
Para obtener una lista de las configuraciones que se pueden superponer, consulta
overlayable.xml
Para ver un ejemplo de implementación, consulta
RROSampleTestApp
en el AOSP.
Si a la implementación le faltan recursos de traducción de cadenas de la IU o si
las traducciones no cumplen con tus expectativas, puedes anular la traducción
recursos con una RRO o trabajan con el equipo de traducción de Google
traducciones de cadenas al módulo CellBroadcast. Si anulas la traducción
recursos, Google debe exponer esas cadenas en overlayable.xml
para permitir
sobre la anulación. Si necesitas más configuraciones para la personalización de la IU, comunícate con
el grupo de asistencia de CellBroadcast.
Migrar los datos
Android 11 incluye una app de CellBroadcast heredada, que es un mecanismo para preservar y migrar los datos de la app (incluidas las opciones de configuración y historiales de alertas de emergencia) para los dispositivos que se actualizan al módulo CellBroadcast. Las implementaciones de Android que utilizan el módulo CellBroadcast deben incluir el aplicación heredada de CellBroadcast en su compilación para la migración de datos. Si el una solución de CellBroadcast personalizada, se debe definir una CellBroadcastContentProvider para preservar datos (puedes quitar de forma segura el APK de transmisión móvil heredado en una versión posterior).
En los dispositivos actualizados para usar el módulo CellBroadcast, el módulo recupera datos
desde la LegacyCellAppApp del AOSP o
APK de CellBroadcastContentProvider definido por OEM a través de la interfaz bien definida
Autoridad cellbroadcast-legacy
.
Cómo usar un APK de CellBroadcastContentProvider definido por el OEM
Cuando se define un APK de CellBroadcastContentProvider, el APK debe seguir estos pasos y las especificaciones del servicio.
El APK es un APK sin interfaz gráfica que solo muestra el contenido de su base de datos. y
SharedPreferences
a través de unContentProvider
objeto con la autoridadcellbroadcast-legacy
, y no se puede acceder a apps de terceros.El APK es desarrollado por el OEM y es propiedad de él, y el OEM puede continuar alojar su esquema de API oculto.
Para migrar SharedPreferences
al módulo CellBroadcast, el elemento
El APK de CellBroadcastContentProvider debe admitir la función
ContentProvider.call
)
con los siguientes parámetros:
- Autoridad:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Método:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
Esta es una lista de claves de preferencias compartidas admitidas para CellBroadcast módulo. Los datos provienen de
SharedPreferences
para laContentProvider.call
.
Para migrar el historial de mensajes al módulo CellBroadcast, el
El APK de CellBroadcastContentProvider debe admitir la función
ContentProvider.query
con los siguientes parámetros:
- Autoridad:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Columnas de consulta enumera las propiedades de mensaje admitidas para el módulo CellBroadcast. Recibir datos (de tu base de datos) para el métodoContentProvider.query
.
Para ver una implementación de referencia de CellBroadcastContentProvider,
, consulta
LegacyCellBroadcastContentProvider
Prueba
El conjunto de pruebas de compatibilidad (CTS) de Android verifica la funcionalidad del
APIs del sistema que dependen de la app. También puedes ejecutar el módulo CellBroadcast
unit tests/testappsp
Si el OEM habilitó el código secreto del CMAS para un dispositivo, ese El dispositivo puede admitir el modo de depuración con las siguientes funciones.
Las alertas de prueba se agrupan en Otras alertas con un botón de activación.
El historial incluye todos los mensajes que se recibieron, pero que no se mostraron, como que haya mensajes duplicados o que estén en otro idioma.
Los mensajes muestran todos los parámetros disponibles, incluido el número de serie, el mensaje ID y fecha de vencimiento.
Para habilitar el modo de depuración, marca *#*#CMAS#*#* en el marcador.
Contacto
Para obtener más información o preguntas acerca del módulo CellBroadcast, comunícate con el Grupo de compatibilidad de CellBroadcast.