Le module CellBroadcast réduit les efforts répétitifs pour les OEM (ce qui réduit la fragmentation dans l'écosystème Android et fournit un comportement cohérent aux utilisateurs finaux). Il permet également de simplifier les tests et la certification des opérateurs pour les exigences liées à CellBroadcast (car le code ne peut pas être modifié par les OEM). Ce module peut être mis à jour, ce qui signifie qu'il peut recevoir des mises à jour des fonctionnalités en dehors du cycle de publication normal d'Android.
Format du package
Le module CellBroadcast se compose des services et applications suivants.
Le service CellBroadcastService prend en charge le décodage des SMS CellBroadcast, le géorepérage pour l'alerte d'urgence sans fil (WEA) 3.0, la vérification de la duplication des messages et la diffusion de messages vers les applications. Il s'agit d'un service de messagerie de type "un à plusieurs" géociblé et géorepérage conçu pour envoyer des messages à plusieurs utilisateurs de téléphones mobiles, dans une zone définie, en même temps. Le service est défini par le comité GSM de l'ETSI, 3GPP, et fait partie des normes de télécommunications.
L'application CellBroadcastReceiver est une application système par défaut qui gère les alertes d'urgence et non d'urgence (telles que les alertes d'ambre et présidentielles) et présente les informations aux utilisateurs finaux en fonction des réglementations de l'opérateur et des régions.
Flux de messages CellBroadcast
La figure suivante illustre le flux de messages CellBroadcast.
Figure 1 : Flux de messages CellBroadcastReceiver
La couche d'interface radio (RIL) informe
InBoundSMSHandler
d'un SMS CellBroadcast CDMA/GSM.Le framework transfère le SMS CellBroadcast au module CBS pour analyser et traiter le message entrant.
Une fois le message traité, CellBroadcastService transfère l'intent à l'application CellBroadcastReceiver par défaut du système.
L'application CellBroadcastReceiver affiche le message à l'utilisateur.
Format du module
Le CellBroadcastService et l'application CellBroadcastReceiver sont inclus dans un seul fichier APEX (com.android.cellbroadcast
), disponible pour les appareils équipés d'Android 11 ou version ultérieure. Le module inclut du code dans package/app/CellBroadcastReceiver
et migre les classes de framework existantes vers packages/modules/CellBroadcastService
.
Dépendances de module
Le module CellBroadcast interagit avec le framework à l'aide de @SystemApi
stables uniquement (pas d'API @hide
) et dépend des bibliothèques statiques suivantes.
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
Vous pouvez personnaliser la configuration à l'aide de superpositions de ressources d'exécution (RRO).
Configuration des autorisations
Le module CellBroadcast est signé avec une signature Google au lieu d'une signature de plate-forme, ce qui signifie que le module perd l'accès aux autorisations de signature.
À la place, Android 11 définit la nouvelle autorisation de signature com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
dans le module CellBroadcast. Seuls les packages du module peuvent obtenir l'autorisation, car ils sont signés avec la même clé. Cette autorisation permet à l'application CellBroadcastReceiver d'avoir un accès complet à la base de données dans CellBroadcastService.
La plate-forme accorde l'autorisation d'exécution android.permission.READ_CELL_BROADCASTS
à l'application SMS système par défaut pour accéder à l'historique des alertes d'urgence.
Intégrer le module CellBroadcast
Cette section explique comment intégrer le module CellBroadcast.
Intégrer à Paramètres
Vous pouvez décider où intégrer les paramètres de CellBroadcast dans l'application Paramètres (les utilisateurs finaux accèdent à la page des paramètres de CellBroadcast à partir de Settings > Apps & Notifications > Advanced > Emergency alert) (Paramètres > Applications et notifications > Paramètres avancés > Alerte d'urgence). Pour lancer l'application CellBroadcastReceiver depuis l'application Paramètres, modifiez les configurations de paramètres suivantes avec le nom de package com.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
Intégrer des applications de messagerie
Vous pouvez intégrer un lien d'application dans des applications de messagerie pour ouvrir l'historique des messages CellBroadcast. Dans l'application Android Messaging, cette fonctionnalité a été intégrée à Paramètres > Paramètres avancés > Alerte d'urgence. Pour intégrer un lien dans votre propre application de messagerie, définissez le chemin d'accès dans l'application de messagerie, puis configurez le nom du composant du module CellBroadcast en tant que com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Intégrer la boîte de réception des SMS
Vous pouvez activer l'affichage des messages CellBroadcast dans l'application de messagerie par défaut en remplaçant la configuration suivante à l'aide d'une superposition de ressources d'exécution.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Étant donné que l'octroi d'autorisations n'entre pas dans le champ d'application du module CellBroadcast, vous devez accorder l'autorisation AppOpsManager.OP_WRITE_SMS
au module CellBroadcast pour fournir une assistance de bout en bout. Pour obtenir une implémentation de référence AOSP, consultez ce correctif SmsApplication.java
.
Lancer l'application CellBroadcastReceiver
L'application CellBroadcastReceiver comporte les points de lancement suivants.
Menu de l'application Paramètres
Une application (y compris des applications tierces) telle qu'une application de messages liée à l'historique des messages CellBroadcast.
(Facultatif) Icône de lancement de l'écran d'accueil Android ajoutée par l'OEM. Pour en savoir plus, consultez Ajouter une icône de lancement.
Paramètres de l'application CellBroadcastReceiver
Les captures d'écran suivantes montrent le menu des paramètres de l'application CellBroadcastReceiver.
Figure 2. Menu des paramètres de l'application CellBroadcastReceiver
Figure 3. Écran de l'historique des alertes d'urgence
Ajouter des icônes de lancement
Vous pouvez activer l'accès à l'historique des messages CellBroadcast depuis le lanceur d'applications et via vos propres icônes de lancement.
Pour activer l'accès à l'historique des messages depuis le lanceur d'applications, remplacez la configuration suivante à l'aide d'un RRO.
<item type="bool" name="show_message_history_in_launcher" />
Pour remplacer l'icône par défaut d'AOSP, remplacez la configuration suivante à l'aide d'un RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Activer le code secret CMAS
Pour activer le code secret CMAS, *#*#CMAS#*#* (*#*#2627#*#* sur le clavier numérique), une application de téléphonie doit écouter le code spécial du clavier sous la forme *#*#code#*#* et gérer ce code à l'aide de la méthode publique sendDialerSpecialCode
.
Exigences concernant les informations sur la zone : canal 50
La chaîne 50 est une chaîne spéciale permettant aux opérateurs de diffuser des informations sur la zone (sauf pour MTN en Afrique du Sud). Pour ce canal, les messages de diffusion ne génèrent pas de boîte de dialogue ni de notification. À la place, les messages de diffusion s'affichent dans l'état de la carte SIM du menu "Paramètres" ou dans la barre d'état (par exemple, affichage d'un code postal).
L'implémentation Android CellBroadcastService est compatible avec les API suivantes dans le service de diffusion cellulaire pour que les applications Paramètres et SysUI puissent obtenir les informations du canal de diffusion 50. Pour ce faire, procédez comme suit :
Enregistrez la diffusion
android.telephony.action.AREA_INFO_UPDATED
et remplacez le nom du package du destinataireconfig_area_info_receiver_packages
via une RRO.Liez-les à
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Étant donné que les applications Settings et SysUI ne relèvent pas du champ d'application du module CellBroadcast, vous devez implémenter vos modifications dans SystemUI ou dans l'application Settings pour assurer une prise en charge de bout en bout. Pour une implémentation de référence, reportez-vous à l'application de paramètres CellBroadcastService.
Personnalisation
Vous ne pouvez pas modifier directement le code source du module CellBroadcast, mais vous pouvez utiliser des superpositions de ressources d'exécution (RRO) pour activer (ou désactiver) des paramètres (par exemple, vous pouvez personnaliser la couleur des notifications et les dimensions des boîtes de dialogue). Pour remplacer les valeurs par défaut des paramètres utilisés dans le module CellBroadcast, remplacez le nom du package cible par com.android.cellbroadcastreceiver
. De plus :
Pour obtenir la liste des configurations superposables, consultez
overlayable.xml
.Pour obtenir un exemple d'implémentation, consultez
RROSampleTestApp
dans AOSP.
Si l'implémentation ne comporte pas de ressources de traduction de chaînes d'interface utilisateur ou si les traductions ne répondent pas à vos attentes, vous pouvez remplacer les ressources de traduction à l'aide d'un RRO ou collaborer avec l'équipe de traduction de Google pour transmettre les traductions de chaînes en amont au module CellBroadcast. Si vous remplacez les ressources de traduction, Google doit exposer ces chaînes dans overlayable.xml
pour permettre le forçage. Si vous avez besoin de plus de configurations pour personnaliser l'UI, contactez le groupe d'assistance CellBroadcast.
Transférer les données
Android 11 inclut une ancienne application CellBroadcast, qui est un mécanisme permettant de préserver et de migrer les données des applications (y compris les paramètres utilisateur et les historiques d'alertes d'urgence) pour les appareils qui passent au module CellBroadcast. Les implémentations Android qui utilisent le module CellBroadcast doivent inclure l'ancienne application CellBroadcast dans leur build pour la migration de données. Si votre implémentation utilise une solution CellBroadcast personnalisée, vous devez définir un APK CellBroadcastContentProvider pour conserver les données (vous pouvez supprimer en toute sécurité l'ancien APK de diffusion cellulaire dans une version ultérieure).
Sur les appareils mis à niveau pour utiliser le module CellBroadcast, le module extrait les données de l'application LegacyCellBroadcastApp AOSP ou de l'APK CellBroadcastContentProvider défini par l'OEM via l'autorité cellbroadcast-legacy
bien définie.
Utiliser un APK CellBroadcastContentProvider défini par l'OEM
Lorsque vous définissez un APK CellBroadcastContentProvider, celui-ci doit respecter les spécifications suivantes.
L'APK est un APK sans tête qui n'affiche que le contenu de sa base de données et de
SharedPreferences
via un objetContentProvider
avec l'autoritécellbroadcast-legacy
. Il n'est pas accessible aux applications tierces.L'APK est développé et détenu par l'OEM, qui peut continuer à héberger son schéma d'API masqué.
Pour migrer SharedPreferences
vers le module CellBroadcast, l'APK CellBroadcastContentProvider doit prendre en charge la méthode ContentProvider.call
avec les paramètres suivants :
- Autorité :
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Méthode :
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg :
@SystemAPI CellBroadcast.Preference
Voici la liste des clés de préférences partagées compatibles avec le module CellBroadcast. Les données proviennent de
SharedPreferences
pour la méthodeContentProvider.call
.
Pour migrer l'historique des messages vers le module CellBroadcast, l'APK CellBroadcastContentProvider doit prendre en charge la méthode ContentProvider.query
avec les paramètres suivants :
- Autorité:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Les colonnes de requêtes répertorient les propriétés de message compatibles pour le module CellBroadcast. Prend des données (de votre base de données) pour la méthodeContentProvider.query
.
Pour une implémentation de référence de CellBroadcastContentProvider,
, consultez LegacyCellBroadcastContentProvider
.
Tests
La suite de tests de compatibilité Android (CTS) vérifie le fonctionnement des API système dépendantes des applications. Vous pouvez également exécuter le module CellBroadcast unit tests/testappsp
.
Si l'OEM a activé le code secret CMAS pour un appareil, celui-ci est compatible avec le mode débogage avec les fonctionnalités suivantes.
Les alertes de test sont regroupées sous Autres alertes avec un bouton d'activation/de désactivation.
L'historique inclut tous les messages reçus, mais non affichés, tels que les messages en double ou les messages dans une autre langue.
Les messages affichent tous les paramètres disponibles, y compris le numéro de série, l'ID du message et la date d'expiration.
Pour activer le mode débogage, composez *#*#CMAS#*#* dans le clavier.
Contact
Pour en savoir plus ou pour toute question concernant le module CellBroadcast, contactez le groupe d'assistance CellBroadcast.