Das CellBroadcast-Modul reduziert repetitive Aufgaben für OEMs (was wiederum die Fragmentierung im Android-System verringert und für Endnutzer ein einheitliches Verhalten ermöglicht) und hilft, die Tests und Zertifizierungen von Mobilfunkanbietern für CellBroadcast-bezogene Anforderungen zu optimieren, da der Code nicht von OEMs geändert werden kann. Dieses Modul kann aktualisiert werden, d. h. es kann außerhalb des normalen Android-Releasezyklus Funktionsupdates erhalten.
Paketformat
Das CellBroadcast-Modul besteht aus dem folgenden Dienst und der folgenden App.
Der Dienst CellBroadcastService unterstützt die Dekodierung von CellBroadcast-SMS, Geofencing für WEA 3.0 (Wireless Emergency Alert), Duplikatprüfungen von Nachrichten und das Senden von Nachrichten an Apps. Es ist ein 1:n-Messagingdienst mit geografischer Ausrichtung und Geofence, mit dem Nachrichten gleichzeitig an mehrere Smartphone-Nutzer 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 Standardsystem-App, die Notfall- und Nichtnotwendigkeitswarnungen (z. B. Gelb- und Präsidentschaftswarnungen) verarbeitet und Endnutzern die Informationen gemäß den Vorschriften des Mobilfunkanbieters und regionalen Vorschriften bereitstellt.
CellBroadcast-Nachrichtenfluss
Die folgende Abbildung zeigt den Nachrichtenfluss von CellBroadcast.
Abbildung 1. Nachrichtenfluss von CellBroadcastReceiver
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 den Intent an die CellBroadcastReceiver-System-App weiter.
Die CellBroadcastReceiver-App zeigt dem Nutzer die Nachricht an.
Modulformat
Die CellBroadcastService- und die CellBroadcastReceiver-App sind in einer einzelnen 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
(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 mithilfe von Laufzeitressourcen-Overlays (RROs) anpassen.
Berechtigungskonfiguration
Das CellBroadcast-Modul ist mit einer Google-Signatur und nicht mit einer Plattformsignatur signiert. Dies bedeutet, dass das Modul keinen Zugriff mehr auf Signaturberechtigungen hat.
Stattdessen definiert Android 11 die neue Signaturberechtigung com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
im CellBroadcast-Modul. Nur Pakete im Modul können die Berechtigung erhalten, da sie mit demselben Schlüssel signiert sind. Mit dieser Berechtigung hat die App „CellBroadcastReceiver“ vollen Zugriff auf die Datenbank in „CellBroadcastService“.
Die Plattform gewährt der android.permission.READ_CELL_BROADCASTS
-Laufzeit der Standard-SMS-App des Systems die Berechtigung zum Zugriff auf den Verlauf der Notfallwarnungen.
CellBroadcast-Modul integrieren
In diesem Abschnitt wird beschrieben, wie Sie das CellBroadcast-Modul einbinden.
In die Einstellungen einbinden
Sie können festlegen, wo die Einstellungen für CellBroadcasts in den Einstellungen integriert werden sollen. Endnutzer rufen die Seite mit den CellBroadcast-Einstellungen unter Einstellungen > Apps & Benachrichtigungen > Erweitert > Notfallbenachrichtigung auf. Wenn Sie die App „CellBroadcastReceiver“ über die Einstellungen starten möchten, ändern Sie die folgenden Konfigurationen mit dem Paketnamen com.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
In Messaging-Apps einbinden
Sie können einen App-Link in Messaging-Apps einbinden, um den Nachrichtenverlauf von CellBroadcasts zu öffnen. In der Android Messaging-App wurde dies unter Einstellungen > Erweitert > Notfallbenachrichtigung integriert. Wenn Sie einen Link in Ihre eigene Messaging-App einbinden 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
.
Mit SMS-Posteingang integrieren
Sie können die Anzeige von CellBroadcast-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 die Erteilung 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 einen End-to-End-Support zu ermöglichen. Eine AOSP-Referenzimplementierung finden Sie in diesem SmsApplication.java
-Patch.
CellBroadcastReceiver-App starten
Die App „CellBroadcastReceiver“ hat die folgenden Startpunkte.
Das Menü der Einstellungen
Eine App (einschließlich Drittanbieter-Apps), z. B. eine Nachrichten-App, die mit dem CellBroadcast-Nachrichtenverlauf verknüpft ist.
Optional: Ein Startsymbol vom Android-Startbildschirm, das vom OEM hinzugefügt wurde. Weitere Informationen finden Sie unter Startsymbol hinzufügen.
Einstellungen der CellBroadcastReceiver App
Die folgenden Screenshots zeigen das Menü „Einstellungen“ der App „CellBroadcastReceiver“.
Abbildung 2. Menü „Einstellungen der App CellBroadcastReceiver“
Abbildung 3 Bildschirm „Bisherige Notfallbenachrichtigungen“
Startsymbole hinzufügen
Sie können den CellBroadcast-Nachrichtenverlauf über den App Launcher und über Ihre eigenen Startsymbole aktivieren.
Wenn Sie den Zugriff auf den Nachrichtenverlauf über den App Launcher aktivieren möchten, überschreiben Sie die folgende Konfiguration mit einer RRO.
<item type="bool" name="show_message_history_in_launcher" />
Wenn Sie das Standardsymbol von AOSP überschreiben möchten, überschreiben Sie die folgende Konfiguration mit einer RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
CMAS-Sicherheitscode aktivieren
Zum Aktivieren des CMAS-Geheimcodes *#*#CMAS#*#* (*#*#2627#*#* auf der Wähltastatur) muss eine Telefon-App den speziellen Telefoncode in Form von *#*#code#*#* überwachen und den Code mit der öffentlichen Methode sendDialerSpecialCode
verarbeiten.
Anforderung an Informationen zu Gebieten: Channel 50
Channel 50 ist ein spezieller Kanal, über den Mobilfunkanbieter standortbezogene Informationen senden können (außer MTN in Südafrika). Für diesen Kanal führen gestreamte Nachrichten nicht zu einem Dialogfeld oder einer Benachrichtigung. Stattdessen werden Broadcast-Nachrichten im SIM-Status des Einstellungsmenüs oder in der Statusleiste angezeigt (z. B. eine Postleitzahl).
Die Android CellBroadcastService-Implementierung unterstützt die folgenden APIs im Cell Broadcast-Dienst, damit die Einstellungen- und SysUI-Apps Informationen zu Broadcast-Kanal 50 abrufen können. So implementieren Sie diese Funktion:
Registriere die Übertragung
android.telephony.action.AREA_INFO_UPDATED
und überschreibe den Namen des Empfängerpaketsconfig_area_info_receiver_packages
über eine RRO.Binden Sie an
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Da die Einstellungen und die SysUI-Apps nicht zum CellBroadcast-Modul gehören, müssen Sie Ihre Änderungen in der SystemUI oder in den Einstellungen implementieren, um einen End-to-End-Support zu ermöglichen. Eine Referenzimplementierung finden Sie in der App „CellBroadcastService Settings“.
Personalisierung
Sie können den Quellcode des CellBroadcast-Moduls nicht direkt ändern. Mit Runtime Resource Overlays (RROs) können Sie jedoch Parameter aktivieren oder 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 Namen des Zielpakets in com.android.cellbroadcastreceiver
. Darüber hinaus gilt Folgendes:
Eine Liste der überlagerbaren Konfigurationen finden Sie unter
overlayable.xml
.Eine Beispielimplementierung finden Sie in AOSP unter
RROSampleTestApp
.
Wenn in der Implementierung Ressourcen für die Übersetzung von UI-Strings fehlen oder die Übersetzungen nicht Ihren Erwartungen entsprechen, können Sie Übersetzungsressourcen mithilfe einer RRO überschreiben oder mit dem Google-Übersetzungsteam zusammenarbeiten, um Stringübersetzungen an das CellBroadcast-Modul weiterzuleiten. Wenn Sie die Übersetzungsressourcen überschreiben, muss Google diese Strings in overlayable.xml
freigeben, damit das Überschreiben möglich ist. 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 alte CellBroadcast-App, mit der App-Daten (einschließlich Nutzereinstellungen und Notfallwarnungsverläufe) für Geräte, die auf das CellBroadcast-Modul umstellen, beibehalten und migriert werden können. Android-Implementierungen, die das CellBroadcast-Modul verwenden, sollten die alte CellBroadcast-App in ihren Build für die Datenmigration einschließen. Wenn Sie in Ihrer Implementierung eine benutzerdefinierte CellBroadcast-Lösung verwenden, sollten Sie ein CellBroadcastContentProvider-APK definieren, um Daten zu erhalten. Sie können das alte CellBroadcast-APK in einer nachfolgenden Version problemlos entfernen.
Auf Geräten, die auf das CellBroadcast-Modul umgestellt wurden, ruft das Modul Daten entweder über die AOSP LegacyCellBroadcastApp oder die vom OEM definierte CellBroadcastContentProvider APK über die genau definierte cellbroadcast-legacy
-Autorität ab.
OEM-definiertes CellBroadcastContentProvider-APK verwenden
Bei der Definition eines CellBroadcastContentProvider-APKs muss das APK diesen Spezifikationen entsprechen.
Das APK ist ein headless APK, das nur den Inhalt seiner Datenbank und
SharedPreferences
über einContentProvider
-Objekt mit dercellbroadcast-legacy
-Autorität anzeigt. Es ist nicht für Drittanbieter-Apps zugänglich.Die APK wird vom OEM entwickelt und gehört ihm. Dort kann er sein ausgeblendetes API-Schema weiterhin hosten.
Wenn Sie SharedPreferences
zum CellBroadcast-Modul migrieren möchten, muss die CellBroadcastContentProvider-APK die Methode ContentProvider.call
mit den folgenden Parametern unterstützen:
- Behörde:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Methode:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
Hier finden Sie 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
.
Wenn Sie den Nachrichtenverlauf in das CellBroadcast-Modul migrieren möchten, muss das CellBroadcastContentProvider-APK die Methode ContentProvider.query
mit den folgenden Parametern unterstützen:
- Zertifizierungsstelle:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. In den Abfragespalten sind die unterstützten Nachrichteneigenschaften für das CellBroadcast-Modul aufgeführt. Nimmt Daten (aus Ihrer Datenbank) für dieContentProvider.query
-Methode auf.
Eine Referenzimplementierung für CellBroadcastContentProvider,
finden Sie unter LegacyCellBroadcastContentProvider
.
Testen
Die Android Compatibility Test Suite (CTS) prüft die Funktionalität von app-abhängigen System-APIs. Sie können auch das CellBroadcast-Modul unit tests/testappsp
ausführen.
Wenn der OEM den geheimen CMAS-Code für ein Gerät aktiviert hat, kann dieses Gerät den Debug-Modus mit den folgenden Funktionen unterstützen.
Testwarnungen werden unter Sonstige Benachrichtigungen mit einer Ein-/Aus-Schaltfläche gruppiert.
Der Verlauf enthält alle empfangenen Nachrichten, die nicht angezeigt wurden, z. B. doppelte Nachrichten oder Nachrichten in einer anderen Sprache.
Die Nachrichten zeigen alle verfügbaren Parameter an, einschließlich Seriennummer, Nachrichten-ID und Ablaufdatum.
Wählen Sie in der Telefon App *#*#CMAS#*#*, um den Debug-Modus zu aktivieren.
Kontakt
Weitere Informationen oder Fragen zum CellBroadcast-Modul richten Sie bitte an die CellBroadcast-Supportgruppe.