Das CellBroadcast-Modul reduziert den wiederholten Aufwand für OEMs (was wiederum die Fragmentierung im Android-Ökosystem verringert und Endnutzern einheitliches Verhalten bietet) und trägt dazu bei, die Carrier-Tests und ‑Zertifizierung für CellBroadcast-bezogene Anforderungen zu optimieren, da der Code nicht von OEMs geändert werden kann. Dieses Modul kann aktualisiert werden. Das bedeutet, dass es außerhalb des normalen Android-Releasezyklus Funktionsupdates erhalten kann.
Paketformat
Das CellBroadcast-Modul besteht aus dem folgenden Dienst und der folgenden App.
Der Dienst CellBroadcastService unterstützt die Dekodierung von Cell Broadcast-SMS, Geofencing für WEA 3.0 (Wireless Emergency Alert), die Überprüfung auf doppelte Nachrichten und das Senden von Nachrichten an Apps. Es handelt sich um einen Dienst für standortbezogene Nachrichten, mit dem Nachrichten gleichzeitig an mehrere Mobiltelefonnutzer in einem bestimmten Gebiet gesendet werden können. Der Dienst wird vom ETSI GSM-Ausschuss, 3GPP, definiert und ist Teil der Telekommunikationsstandards.
Die App CellBroadcastReceiver ist eine standardmäßige System-App, die Notfall- und nicht dringende Benachrichtigungen (z. B. Amber Alerts und Presidential Alerts) verarbeitet und die Informationen Endnutzern basierend auf den Vorschriften von Mobilfunkanbietern und Regionen präsentiert.
Cell-Broadcast-Nachrichtenfluss
Die folgende Abbildung zeigt den Ablauf von CellBroadcast-Nachrichten.
Abbildung 1: CellBroadcastReceiver-Nachrichtenfluss
Die Radio Interface Layer (RIL) benachrichtigt
InBoundSMSHandler
über eine CDMA-/GSM-CellBroadcast-SMS.Das Framework leitet die CellBroadcast-SMS an das CBS-Modul weiter, um die eingehende Nachricht zu parsen und zu verarbeiten.
Nachdem die Nachricht verarbeitet wurde, leitet CellBroadcastService die Intention an die standardmäßige CellBroadcastReceiver-App des Systems weiter.
Die CellBroadcastReceiver-App zeigt die Nachricht dem Nutzer an.
Modulformat
Der CellBroadcastService und die CellBroadcastReceiver-App sind in einer einzigen APEX-Datei (com.android.cellbroadcast
) enthalten, die für Geräte mit Android 11 oder höher verfügbar ist. Das Modul enthält Code in package/app/CellBroadcastReceiver
und migriert vorhandene Framework-Klassen zu packages/modules/CellBroadcastService
.
Modulabhängigkeiten
Das CellBroadcast-Modul interagiert mit dem Framework nur über stabile @SystemApi
-APIs (keine @hide
-APIs) und hängt von den folgenden statischen Bibliotheken ab.
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
Sie können die Konfiguration mit RROs (Runtime Resource Overlays) anpassen.
Berechtigungskonfiguration
Das CellBroadcast-Modul ist mit einer Google-Signatur anstelle einer Plattformsignatur signiert. Das bedeutet, dass das Modul den Zugriff auf Signaturberechtigungen verliert.
Stattdessen wird in Android 11 die neue Signaturberechtigung com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
im CellBroadcast-Modul definiert. Nur Pakete im Modul können die Berechtigung erhalten, da sie mit demselben Schlüssel signiert sind. Diese Berechtigung ermöglicht der CellBroadcastReceiver-App den vollständigen Zugriff auf die Datenbank in CellBroadcastService.
Die Plattform gewährt der android.permission.READ_CELL_BROADCASTS
-Laufzeit die Berechtigung für die standardmäßige SMS-App des Systems, auf den Verlauf von Notfallbenachrichtigungen zuzugreifen.
CellBroadcast-Modul einbinden
In diesem Abschnitt wird beschrieben, wie Sie das CellBroadcast-Modul einbinden.
In die Einstellungen einbinden
Sie können entscheiden, wo Sie die CellBroadcast-Einstellungen in die Einstellungen einfügen möchten. Endnutzer greifen über Einstellungen > Apps & Benachrichtigungen > Erweitert > Notfallbenachrichtigung auf die Seite mit den CellBroadcast-Einstellungen zu. Wenn Sie die CellBroadcastReceiver-App über die Einstellungen starten möchten, ändern Sie die folgenden Einstellungen mit dem Paketnamen com.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
Integration in Messaging-Apps
Sie können einen App-Link in Messaging-Apps einbinden, um den CellBroadcast-Nachrichtenverlauf zu öffnen. In der Android-Messaging-App wurde diese Funktion in Einstellungen > Erweitert > Notfallbenachrichtigung integriert. Wenn Sie einen Link in Ihre eigene Messaging-App einfügen möchten, definieren Sie den Pfad in der Messaging-App und konfigurieren Sie den Komponentennamen für das CellBroadcast-Modul als com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Integration in den SMS-Posteingang
Sie können die Anzeige von Cell Broadcast-Nachrichten in der Standard-Messaging-App aktivieren, indem Sie die folgende Konfiguration mit einem Laufzeit-Ressourcen-Overlay überschreiben.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Da das Gewähren von Berechtigungen nicht in den Zuständigkeitsbereich des CellBroadcast-Moduls fällt, müssen Sie dem CellBroadcast-Modul die Berechtigung AppOpsManager.OP_WRITE_SMS
gewähren, um End-to-End-Support zu ermöglichen. Eine AOSP-Referenzimplementierung finden Sie in diesem SmsApplication.java
-Patch.
CellBroadcastReceiver-App starten
Die CellBroadcastReceiver-App hat die folgenden Startpunkte.
Das Menü der Einstellungen.
Eine App (einschließlich Drittanbieter-Apps), z. B. eine Messaging-App, die mit dem Cell Broadcast-Nachrichtenverlauf verknüpft ist.
(Optional) Ein vom OEM hinzugefügtes Startsymbol auf dem Android-Startbildschirm. Weitere Informationen finden Sie unter Startsymbol hinzufügen.
Einstellungen der CellBroadcastReceiver-App
Die folgenden Screenshots zeigen das Einstellungsmenü der CellBroadcastReceiver-App.
Abbildung 2: Menü „Einstellungen“ der CellBroadcastReceiver-App
Abbildung 3: Bildschirm „Bisherige Warnmeldungen“
Startsymbole hinzufügen
Sie können den Zugriff auf den CellBroadcast-Nachrichtenverlauf über den App-Launcher und über Ihre eigenen Launcher-Symbole aktivieren.
Wenn Sie den Zugriff auf den Nachrichtenverlauf über den App-Launcher aktivieren möchten, überschreiben Sie die folgende Konfiguration mit einem RRO.
<item type="bool" name="show_message_history_in_launcher" />
Wenn Sie das AOSP-Standardsymbol überschreiben möchten, überschreiben Sie die folgende Konfiguration mit einem RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
CMAS-Geheimcode aktivieren
Damit der CMAS-Geheimcode *#*#CMAS#*#* (*#*#2627#*#* auf dem Wähltastenfeld) aktiviert werden kann, muss eine Dialer-App auf den speziellen Dialer-Code im Format *#*#code#*#* warten und den Code mit der öffentlichen Methode sendDialerSpecialCode
verarbeiten.
Anforderung für Bereichsinformationen: Channel 50
Kanal 50 ist ein spezieller Kanal für Mobilfunkanbieter, über den sie gebietsbezogene Informationen senden können (außer MTN in Südafrika). Bei diesem Kanal führen Broadcast-Nachrichten nicht zu einem Dialogfeld oder einer Benachrichtigung. Stattdessen werden Broadcast-Meldungen im SIM-Status in den Einstellungen oder in der Statusleiste angezeigt (z. B. eine Postleitzahl).
Die Android CellBroadcastService-Implementierung bietet Unterstützung für die folgenden APIs im Cell Broadcast-Dienst, damit die Einstellungen und SysUI-Apps die Informationen zu Channel 50 abrufen können. So implementieren Sie das:
Registriere den Broadcast
android.telephony.action.AREA_INFO_UPDATED
und überschreibe den Paketnamen des Empfängersconfig_area_info_receiver_packages
über ein RRO.Binden Sie an
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Da die Einstellungen und SysUI-Apps nicht zum CellBroadcast-Modul gehören, müssen Sie Ihre Änderungen in der SystemUI- oder der Einstellungen-App implementieren, um eine End-to-End-Unterstützung zu ermöglichen. Eine Referenzimplementierung finden Sie in der CellBroadcastService Settings-App.
Personalisierung
Sie können den Quellcode des CellBroadcast-Moduls nicht direkt ändern, aber RROs (Runtime Resource Overlays) verwenden, um Parameter zu aktivieren oder zu deaktivieren. So können Sie beispielsweise die Farbe von Benachrichtigungen und die Abmessungen von Dialogfeldern anpassen. Wenn Sie die Standardwerte der im CellBroadcast-Modul verwendeten Parameter überschreiben möchten, ändern Sie den Zielpaketnamen in com.android.cellbroadcastreceiver
. Darüber hinaus gilt Folgendes:
Eine Liste der überlagerbaren Konfigurationen finden Sie unter
overlayable.xml
.Eine Beispielimplementierung finden Sie unter
RROSampleTestApp
in AOSP.
Wenn in der Implementierung keine Ressourcen für die Übersetzung von UI-Strings vorhanden sind oder die Übersetzungen nicht Ihren Erwartungen entsprechen, können Sie Übersetzungsressourcen mit einem RRO überschreiben oder mit dem Google-Übersetzungsteam zusammenarbeiten, um String-Übersetzungen in das CellBroadcast-Modul zu übertragen. Wenn Sie die Übersetzungsressourcen überschreiben, müssen diese Strings in overlayable.xml
verfügbar sein, damit sie überschrieben werden können. Wenn Sie weitere Konfigurationen für die Anpassung der Benutzeroberfläche benötigen, wenden Sie sich an die CellBroadcast-Supportgruppe.
Daten migrieren
Android 11 enthält eine Legacy-CellBroadcast-App, die als Mechanismus zum Beibehalten und Migrieren von App-Daten (einschließlich Nutzereinstellungen und Notfallbenachrichtigungsverläufe) für Geräte dient, die auf das CellBroadcast-Modul aktualisiert werden. Android-Implementierungen, die das CellBroadcast-Modul verwenden, sollten die alte CellBroadcast-App in ihren Build für die Datenmigration einbeziehen. Wenn Sie eine benutzerdefinierte CellBroadcast-Lösung verwenden, sollten Sie ein CellBroadcastContentProvider-APK definieren, um Daten beizubehalten. Das alte CellBroadcast-APK können Sie in einer späteren Version sicher entfernen.
Auf Geräten, die für die Verwendung des CellBroadcast-Moduls aktualisiert wurden, ruft das Modul Daten entweder von der AOSP LegacyCellBroadcastApp oder vom OEM-definierten CellBroadcastContentProvider-APK über die genau definierte cellbroadcast-legacy
-Autorität ab.
Verwenden Sie ein vom OEM definiertes CellBroadcastContentProvider-APK.
Beim Definieren eines CellBroadcastContentProvider-APKs muss das APK die folgenden Spezifikationen erfüllen.
Das APK ist ein Headless-APK, das nur den Inhalt seiner Datenbank und
SharedPreferences
über einContentProvider
-Objekt mit dercellbroadcast-legacy
-Autorität bereitstellt und für Drittanbieter-Apps nicht zugänglich ist.Die APK wird vom OEM entwickelt und gehört ihm. Der OEM kann sein verborgenes API-Schema weiterhin hosten.
Für die Migration von SharedPreferences
zum CellBroadcast-Modul muss das CellBroadcastContentProvider-APK die Methode ContentProvider.call
) mit den folgenden Parametern unterstützen:
- Entscheidungsbefugnis:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Methode:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
Dies ist eine Liste der unterstützten Schlüssel für freigegebene Einstellungen für das CellBroadcast-Modul. Die Daten stammen aus
SharedPreferences
für die MethodeContentProvider.call
.
Damit der Nachrichtenverlauf zum CellBroadcast-Modul migriert werden kann, muss das CellBroadcastContentProvider-APK die Methode ContentProvider.query
mit den folgenden Parametern unterstützen:
- Entscheidungsbefugnis:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. In der Liste der Abfragespalten sind die unterstützten Nachrichteneigenschaften für das CellBroadcast-Modul aufgeführt. Nimmt Daten (aus Ihrer Datenbank) für dieContentProvider.query
-Methode entgegen.
Eine Referenzimplementierung für CellBroadcastContentProvider,
finden Sie unter LegacyCellBroadcastContentProvider
.
Testen
Mit der Android Compatibility Test Suite (CTS) wird die Funktionalität von app-abhängigen System-APIs überprüft. Sie können auch das CellBroadcast-Modul unit tests/testappsp
ausführen.
Wenn der OEM den CMAS-Geheimcode für ein Gerät aktiviert hat, kann dieses Gerät den Debugmodus mit den folgenden Funktionen unterstützen.
Testwarnungen werden unter Andere Warnungen mit einem Ein/Aus-Schalter gruppiert.
Der Verlauf enthält alle Nachrichten, die empfangen, aber nicht angezeigt wurden, z. B. doppelte Nachrichten oder Nachrichten in einer anderen Sprache.
In den Nachrichten werden alle verfügbaren Parameter angezeigt, einschließlich Seriennummer, Nachrichten-ID und Ablaufdatum.
Um den Debug-Modus zu aktivieren, wählen Sie im Dialer *#*#CMAS#*#*.
Kontakt
Weitere Informationen oder Fragen zum CellBroadcast-Modul erhalten Sie von der CellBroadcast-Supportgruppe.