CellBroadcast

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 offre un comportement cohérent aux utilisateurs finaux) et contribue à 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 est actualisable, ce qui signifie qu'il peut recevoir des mises à jour de fonctionnalités en dehors du cycle de publication Android normal.

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 geofencing 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éolocalisé 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é ETSI GSM, 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 Amber 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 de messages CellBroadcast.

Flux de messages CellBroadcastReceiver

Figure 1. Flux de messages CellBroadcastReceiver

  1. La couche d'interface radio (RIL) informe InBoundSMSHandler d'un SMS CellBroadcast CDMA/GSM.

  2. Le framework transfère le SMS CellBroadcast au module CBS pour analyser et traiter le message entrant.

  3. Une fois le message traité, CellBroadcastService transfère l'intent vers l'application CellBroadcastReceiver par défaut du système.

  4. L'application CellBroadcastReceiver affiche le message à l'utilisateur.

Format du module

CellBroadcastService et l'application CellBroadcastReceiver sont inclus dans un seul fichier APEX (com.android.cellbroadcast), disponible pour les appareils fonctionnant sous 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 du 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 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 qu'il perd l'accès aux autorisations de signature. Au lieu de cela, 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 de 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 à partir de 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 aux 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 Android Messages, 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 comme 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 fait pas partie du module CellBroadcast, vous devez accorder l'autorisation AppOpsManager.OP_WRITE_SMS au module CellBroadcast pour fournir une assistance de bout en bout. Pour une implémentation de référence AOSP, consultez ce SmsApplication.java correctif.

Lancer l'application CellBroadcastReceiver

L'application CellBroadcastReceiver comporte les points de lancement suivants.

  • Le menu de l'application Paramètres.

  • Une application (y compris des applications tierces) telle qu'une application de messagerie qui renvoie à l'historique des messages CellBroadcast.

  • (Facultatif) Une 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.

Menu des paramètres de l&#39;application CellBroadcastReceiver

Figure 2. Menu des paramètres de l'application CellBroadcastReceiver

Historique des alertes d&#39;urgence

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'une RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Pour remplacer l'icône par défaut AOSP, remplacez la configuration suivante à l'aide d'une 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 pavé numérique), une application de numérotation doit écouter le code spécial de numérotation au format *#*#code#*#* et gérer le code à l'aide de la méthode publique sendDialerSpecialCode.

Exigence d'informations sur la zone : canal 50

Le canal 50 est un canal spécial permettant aux opérateurs de diffuser des informations sur la zone (à l'exception de MTN en Afrique du Sud). Pour ce canal, les messages de diffusion n'entraînent pas de boîte de dialogue ni de notification. Au lieu de cela, 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, 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 du canal de diffusion 50. Pour implémenter cette fonctionnalité, procédez comme suit :

  • Enregistrez la diffusion android.telephony.action.AREA_INFO_UPDATED et remplacez le nom du package du récepteur config_area_info_receiver_packages via une RRO.

  • Associez-vous à 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 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) 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. Autres caractéristiques :

  • Pour obtenir la liste des configurations superposables, consultez overlayable.xml.

  • Pour 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'une 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 autoriser le remplacement. Si vous avez besoin de plus de configurations pour personnaliser l'interface utilisateur, contactez le groupe d'assistance CellBroadcast.

Migrer les données

Android 11 inclut une application CellBroadcast héritée, qui est un mécanisme permettant de préserver et de migrer les données de l'application (y compris les paramètres utilisateur et les historiques d'alertes d'urgence) pour les appareils passant au module CellBroadcast. Les implémentations Android qui utilisent le module CellBroadcast doivent inclure l'application CellBroadcast héritée 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 préserver les données (vous pouvez supprimer en toute sécurité l'APK de diffusion cellulaire héritée 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 APK CellBroadcastContentProvider défini par l'OEM

Lors de la définition d'un APK CellBroadcastContentProvider, l'APK doit respecter les spécifications suivantes.

  • L'APK est un APK sans interface graphique qui n'affiche que le contenu de sa base de données et SharedPreferences via un ContentProvider objet avec l'autorité cellbroadcast-legacy, et 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 ContentProvider.call) méthode avec les paramètres suivants :

  • Autorité : @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Méthode : @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Argument : @SystemAPI CellBroadcast.Preference

    Voici la liste des clés de préférences partagées compatibles pour le module CellBroadcast. Les données proviennent de SharedPreferences pour la ContentProvider.call méthode.

Pour migrer l'historique des messages vers le module CellBroadcast, l' APK CellBroadcastContentProvider doit être compatible avec la ContentProvider.query méthode avec les paramètres suivants :

  • Autorité : @SystemAPI CellBroadcast.LEGACY_CONTENT_URI. Liste des colonnes de requête des propriétés de message compatibles pour le module CellBroadcast. Prend en compte les données (de votre base de données) pour la méthode ContentProvider.query.

Pour une implémentation de référence de CellBroadcastContentProvider, consultez LegacyCellBroadcastContentProvider.

Tests

L'outil Android Compatibility Test Suite (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, cet appareil peut être 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#*#* sur le pavé numérique.

Contact

Pour plus d'informations ou pour toute question concernant le module CellBroadcast, contactez le groupe d'assistance CellBroadcast.