Das CellBroadcast-Modul reduziert den wiederholten Aufwand für OEMs (was wiederum die Fragmentierung im Android-Ökosystem verringert und den Endnutzern ein einheitliches Verhalten bietet) und trägt dazu bei, die Tests und die Zertifizierung von Mobilfunkanbietern für CellBroadcast-bezogene Anforderungen zu optimieren, da der Code von OEMs nicht geändert werden kann. Dieses Modul kann aktualisiert werden. Das bedeutet, dass es auch 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 CellBroadcast-SMS, Geofencing für WEA (Wireless Emergency Alert) 3.0, die Überprüfung auf doppelte Nachrichten und das Senden von Nachrichten an Apps. Es handelt sich um einen Geotargeting- und Geofencing-Messaging-Dienst, mit dem Nachrichten gleichzeitig an mehrere Mobiltelefonnutzer in einem bestimmten Gebiet gesendet werden können. Der Dienst wird von dem ETSI GSM-Komitee, 3GPP definiert und ist Teil der Telekommunikationsstandards.
Die App CellBroadcastReceiver ist eine Standard-System-App, die Notfall- und Nicht-Notfallbenachrichtigungen (z. B. Amber Alerts und Presidential Alerts) verarbeitet und die Informationen gemäß den Vorschriften des Mobilfunkanbieters und der Region an die Endnutzer weiterleitet.
CellBroadcast-Nachrichtenfluss
Die folgende Abbildung zeigt den CellBroadcast-Nachrichtenfluss.
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 den Intent an die Standard-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 nur über stabile @SystemApi mit dem Framework (keine @hide-APIs) und ist von den folgenden statischen Bibliotheken abhängig.
Androidx.legacy_legacy-support-v13Androidx.recyclerview_recyclerviewAndroidx.preference_preferenceandroidx.legacy_legacy-preference-v14androidx.appcompat_appcompat
Sie können die Konfiguration mit Runtime Resource Overlays (RROs) 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. Mit dieser Berechtigung hat die CellBroadcastReceiver-App uneingeschränkten Zugriff auf die Datenbank in CellBroadcastService.
Die Plattform gewährt der Standard-SMS-App des Systems die Laufzeitberechtigung android.permission.READ_CELL_BROADCASTS, um 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 festlegen, wo die CellBroadcast-Einstellungen in die Einstellungen eingebunden werden sollen
(Endnutzer greifen über Einstellungen >
Apps & Benachrichtigungen > Erweitert > Warnmeldung auf die Seite mit den CellBroadcast-Einstellungen zu). Wenn Sie die CellBroadcastReceiver-App über die Einstellungen starten möchten, ändern Sie die folgenden Konfigurationseinstellungen 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 CellBroadcast-Nachrichtenverlauf zu öffnen. In der Android Messaging-App wurde dies unter Einstellungen > Erweitert > Warnmeldung eingebunden. 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.
In den SMS-Posteingang einbinden
Sie können die Anzeige von CellBroadcast-Nachrichten in der Standard-Messaging-App aktivieren, indem Sie die folgende Konfiguration mit einem Runtime Resource Overlay überschreiben.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Da die Berechtigungsvergabe nicht zum Umfang des CellBroadcast-Moduls gehört, müssen Sie dem CellBroadcast-Modul die Berechtigung AppOpsManager.OP_WRITE_SMS gewähren, um End-to-End-Support zu bieten. 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) wie eine Nachrichten-App, die mit dem CellBroadcast-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 Menü mit den Einstellungen der CellBroadcastReceiver-App.
Abbildung 2 : Menü mit den 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 Startsymbole 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
Wenn Sie den CMAS-Geheimcode *#*#CMAS#*#* (*#*#2627#*#* auf dem
Ziffernblock) aktivieren möchten, 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 Gebietsinformationen: Kanal 50
Kanal 50 ist ein spezieller Kanal für Mobilfunkanbieter, um gebietsbezogene Informationen zu senden (außer für MTN in Südafrika). Bei diesem Kanal führen Broadcast-Nachrichten nicht zu einem Dialogfeld oder einer Benachrichtigung. Stattdessen werden Broadcast-Nachrichten im SIM-Status des Menüs „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 (CB)-Dienst, damit die Apps „Einstellungen“ und „SysUI“ die Broadcast-Informationen von Kanal 50 abrufen können. So implementieren Sie das:
Registrieren Sie den Broadcast
android.telephony.action.AREA_INFO_UPDATEDund überschreiben Sie den Paketnamen des Empfängersconfig_area_info_receiver_packagesüber ein RRO.Binden Sie an
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE.
Da die Apps „Einstellungen“ und „SysUI“ nicht zum Umfang des CellBroadcast-Moduls gehören, müssen Sie Ihre Änderungen in der SystemUI- oder der Einstellungen-App implementieren, um End-to-End-Support zu bieten. Eine Referenzimplementierung finden Sie in der Einstellungen-App von CellBroadcastService.
Anpassung
Sie können den Quellcode des CellBroadcast-Moduls nicht direkt ändern, aber Sie
können Runtime Resource Overlays
(RROs) 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. Außerdem haben wir folgende Änderungen vorgenommen:
Eine Liste der überschreibbaren Konfigurationen finden Sie unter
overlayable.xml.Eine Beispielimplementierung finden Sie unter
RROSampleTestAppin 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, muss Google diese Strings in overlayable.xml verfügbar machen, damit sie überschrieben werden können. Wenn Sie weitere Konfigurationen für die UI-Anpassung benötigen, wenden Sie sich an
die CellBroadcast-Supportgruppe.
Daten migrieren
Android 11 enthält eine ältere CellBroadcast-App, mit der App-Daten (einschließlich Nutzereinstellungen und Verläufe von Warnmeldungen) für Geräte, die auf das CellBroadcast-Modul aktualisiert werden, beibehalten und migriert werden können. Android-Implementierungen, die das CellBroadcast-Modul verwenden, sollten die ältere CellBroadcast-App in ihren Build einbeziehen, um Daten zu migrieren. Wenn Ihre Implementierung eine benutzerdefinierte Cell Broadcast (CB)-Lösung verwendet, sollten Sie ein CellBroadcastContentProvider-APK definieren, um Daten beizubehalten. Sie können das ältere Cell Broadcast (CB)-APK in einem späteren Release sicher entfernen.
Auf Geräten, die für die Verwendung des CellBroadcast-Moduls aktualisiert wurden, ruft das Modul Daten entweder aus der AOSP-LegacyCellBroadcastApp oder dem vom OEM definierten CellBroadcastContentProvider-APK über die genau definierte cellbroadcast-legacy-Authority ab.
Vom OEM definiertes CellBroadcastContentProvider-APK verwenden
Beim Definieren eines CellBroadcastContentProvider-APKs muss das APK die folgenden Spezifikationen erfüllen.
Das APK ist ein headless -APK, das nur die Inhalte seiner Datenbank und
SharedPreferencesüber einContentProvider-Objekt mit dercellbroadcast-legacy-Authority verfügbar macht und für Drittanbieter-Apps nicht zugänglich ist.Das APK wird vom OEM entwickelt und gehört ihm. Der OEM kann sein verborgenes API-Schema weiterhin hosten.
Wenn Sie SharedPreferences zum CellBroadcast-Modul migrieren möchten, muss das
CellBroadcastContentProvider-APK die
ContentProvider.call)
Methode mit den folgenden Parametern unterstützen:
- Authority:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI - Methode:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE Argument:
@SystemAPI CellBroadcast.PreferenceDies ist eine Liste der unterstützten Schlüssel für gemeinsame Einstellungen für das CellBroadcast-Modul. Die Daten stammen aus
SharedPreferencesfür dieContentProvider.callMethode.
Wenn Sie den Nachrichtenverlauf zum CellBroadcast-Modul migrieren möchten, muss das
CellBroadcastContentProvider-APK die
ContentProvider.query
Methode mit den folgenden Parametern unterstützen:
- Authority:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI. Die Liste der Abfragespalten enthält unterstützte Nachrichteneigenschaften für das CellBroadcast-Modul. Übernimmt Daten (aus Ihrer Datenbank) für die MethodeContentProvider.query.
Eine Referenzimplementierung für CellBroadcastContentProvider, finden Sie unter
LegacyCellBroadcastContentProvider.
Test
Die Android Compatibility Test Suite (CTS) überprüft die Funktionalität von app-abhängigen System-APIs. Sie können auch das CellBroadcast-Modul ausführen
unit tests/testappsp.
Wenn der OEM den CMAS-Geheimcode für ein Gerät aktiviert hat, kann dieses Gerät den Debug-Modus mit den folgenden Funktionen unterstützen.
Testwarnungen werden unter Andere Warnmeldungen mit einer Ein/Aus-Schaltfläche gruppiert.
Der Verlauf enthält alle Nachrichten, die empfangen, aber nicht angezeigt wurden, z. B. doppelte Nachrichten oder Nachrichten in einer anderen Sprache.
In Nachrichten werden alle verfügbaren Parameter angezeigt, einschließlich Seriennummer, Nachrichten-ID und Ablaufdatum.
Wenn Sie den Debug-Modus aktivieren möchten, wählen Sie *#*#CMAS#*#* im Dialer.
Kontakt
Weitere Informationen oder Fragen zum CellBroadcast-Modul erhalten Sie von der CellBroadcast-Supportgruppe.