Le module CellBroadcast réduit les efforts répétitifs pour les OEM (ce qui, à son tour, réduit la fragmentation dans l'écosystème Android et offre un comportement cohérent aux utilisateurs finaux) et permet de rationaliser 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 est évolutif, ce qui signifie qu'il peut recevoir des mises à jour de fonctionnalités en dehors du cycle de publication normal d'Android.
Format du package
Le module CellBroadcast se compose du service et de l'application suivants.
Le service CellBroadcastService est compatible avec le décodage des SMS CellBroadcast, le géorepérage pour les alertes d'urgence sans fil (WEA) 3.0, les vérifications de duplication des messages et la diffusion de messages aux applications. Il s'agit d'un service de messagerie géociblé et géorepéré de type un à plusieurs, 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 ETSI, 3GPP, et fait partie des normes de télécommunication.
L'application CellBroadcastReceiver est une application système par défaut qui gère les alertes d'urgence et non urgentes (telles que les alertes ambre et présidentielles) et présente les informations aux utilisateurs finaux en fonction des réglementations régionales et des opérateurs.
Flux de messages CellBroadcast
La figure suivante illustre le flux des 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 qu'il analyse et traite 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
L'application CellBroadcastService et CellBroadcastReceiver est incluse dans un seul fichier APEX (com.android.cellbroadcast
), qui est 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 en utilisant uniquement des @SystemApi
stables (aucune 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 des calques 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 qu'il perd l'accès aux autorisations de signature.
Android 11 définit plutôt 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 aux paramètres
Vous pouvez choisir où intégrer les paramètres CellBroadcast dans l'application Paramètres (les utilisateurs finaux accèdent à la page des paramètres CellBroadcast depuis 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 les applications de messagerie pour ouvrir l'historique des messages CellBroadcast. Dans l'application de messagerie Android, 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 et configurez le nom du composant pour le module CellBroadcast sur com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Intégrer à la boîte de réception 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 ne relève pas 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 Réglages.
Une application (y compris une application tierce) telle qu'une application de messagerie qui renvoie à l'historique des messages CellBroadcast.
(Facultatif) Icône de lancement ajoutée par l'OEM sur l'écran d'accueil Android. 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 à l'aide de 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 AOSP par défaut, 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), une application de saisie de numéro doit écouter le code spécial de saisie de numéro au format *#*#code#*#* et gérer le code à l'aide de la méthode publique sendDialerSpecialCode
.
Exigence d'informations sur la zone : chaîne 50
La chaîne 50 est une chaîne spéciale permettant aux opérateurs de diffuser des informations sur la zone (sauf MTN en Afrique du Sud). Pour cette chaîne, les messages de diffusion n'entraînent pas l'affichage d'une boîte de dialogue ni d'une notification. Les messages de diffusion s'affichent plutôt dans l'état de la carte SIM du menu "Paramètres" ou dans la barre d'état (par exemple, en affichant 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 obtiennent les informations sur le canal de diffusion 50. Pour ce faire :
Enregistrez la diffusion
android.telephony.action.AREA_INFO_UPDATED
et remplacez le nom du package du récepteurconfig_area_info_receiver_packages
via un RRO.Associez-le à
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Étant donné que les applications Paramètres et SysUI ne font pas partie du module CellBroadcast, vous devez implémenter vos modifications dans l'application SystemUI ou Paramètres pour fournir une assistance de bout en bout. Pour obtenir une implémentation de référence, consultez l'application 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) les 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 contient 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 Google pour transférer les traductions de chaînes vers le module CellBroadcast. Si vous remplacez les ressources de traduction, Google doit exposer ces chaînes dans overlayable.xml
pour permettre le remplacement. 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 des 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 des 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 l'ancien APK CellBroadcast dans une version ultérieure).
Sur les appareils mis à niveau pour utiliser le module CellBroadcast, le module récupère les données à partir de l'APK AOSP LegacyCellBroadcastApp ou de l'APK CellBroadcastContentProvider défini par l'OEM via l'autorité cellbroadcast-legacy
bien définie.
Utiliser un fichier APK CellBroadcastContentProvider défini par l'OEM
Lorsque vous définissez un fichier APK CellBroadcastContentProvider, il doit respecter les spécifications suivantes.
L'APK est un APK sans interface utilisateur qui ne présente que le contenu de sa base de données et
SharedPreferences
par le biais d'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 être compatible avec la méthode ContentProvider.call
) avec les paramètres suivants :
- Autorité :
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Méthode :
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Argument :
@SystemAPI CellBroadcast.Preference
Il s'agit d'une 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 être compatible avec la méthode ContentProvider.query
avec les paramètres suivants :
- Autorité :
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Les colonnes de requête listent les propriétés de message compatibles pour le module CellBroadcast. Accepte les données (de votre base de données) pour la méthodeContentProvider.query
.
Pour obtenir une implémentation de référence pour CellBroadcastContentProvider,
, consultez LegacyCellBroadcastContentProvider
.
Tests
La suite de tests de compatibilité Android (CTS) vérifie la fonctionnalité 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 peut être compatible avec le mode débogage et les fonctionnalités suivantes.
Les alertes de test sont regroupées sous Autres alertes et peuvent être activées ou désactivées.
L'historique inclut tous les messages reçus, mais non affichés, tels que les messages en double ou 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#*#* sur le clavier.
Contact
Pour en savoir plus ou poser des questions sur le module CellBroadcast, contactez le groupe d'assistance CellBroadcast.