Das CellBroadcast-Modul reduziert den sich wiederholenden Aufwand für OEMs (was wiederum die Fragmentierung im gesamten Android-Ökosystem verringert und den Endbenutzern ein einheitliches Verhalten bietet) und hilft, die Carrier-Tests und -Zertifizierung für CellBroadcast-bezogene Anforderungen zu rationalisieren (da der Code nicht von OEMs geändert werden kann). ). Dieses Modul ist aktualisierbar, d. h. es kann Funktionsaktualisierungen außerhalb des normalen Android-Veröffentlichungszyklus erhalten.
Das CellBroadcast-Modul besteht aus dem folgenden Dienst und der folgenden App.
Der CellBroadcastService -Dienst unterstützt CellBroadcast-SMS-Decodierung, Geofencing für Wireless Emergency Alert (WEA) 3.0, Nachrichtenduplizierungsprüfungen und das Senden von Nachrichten an Apps. Es handelt sich um einen One-to-Many-Messaging-Dienst mit Geotargeting und Geofence, der entwickelt wurde, um Nachrichten gleichzeitig an mehrere Mobiltelefonbenutzer in einem definierten Bereich zu senden. Der Dienst wird vom ETSI -GSM-Komitee 3GPP definiert und ist Teil der Telekommunikationsstandards.
Die CellBroadcastReceiver- App ist eine standardmäßige System-App, die Notfall- und Nicht-Notfall-Warnungen (z. B. gelbe und Präsidenten-Warnungen) verarbeitet und die Informationen den Endbenutzern basierend auf Betreiber- und regionalen Vorschriften präsentiert.
Die folgende Abbildung zeigt den CellBroadcast-Nachrichtenfluss.
Abbildung 1. CellBroadcastReceiver-Nachrichtenfluss
Die Funkschnittstellenschicht (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 analysieren und zu verarbeiten.
Nachdem die Nachricht verarbeitet wurde, leitet CellBroadcastService die Absicht an die standardmäßige CellBroadcastReceiver-App des Systems weiter.
Die CellBroadcastReceiver-App zeigt dem Benutzer die Nachricht an.
Modulformat
Der CellBroadcastService und die CellBroadcastReceiver-App sind in einer einzigen APEX -Datei ( com.google.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 unter Verwendung stabiler @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 Runtime Resource Overlays (RROs) anpassen .
Berechtigungskonfiguration
Das CellBroadcast-Modul ist mit einer Google-Signatur anstelle einer Plattformsignatur signiert, was bedeutet, dass das Modul den Zugriff auf Signaturberechtigungen verliert. Stattdessen definiert Android 11 die neue Signaturberechtigung com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
innerhalb des CellBroadcast-Moduls; Nur Pakete im Modul können die Berechtigung erhalten, da sie mit demselben Schlüssel signiert sind. Diese Berechtigung ermöglicht der CellBroadcastReceiver-App vollen Zugriff auf die Datenbank innerhalb von CellBroadcastService.
Die Plattform erteilt der standardmäßigen System-SMS-App die Laufzeitberechtigung android.permission.READ_CELL_BROADCASTS
für den Zugriff auf den Verlauf der Notfallbenachrichtigungen.
Integration des CellBroadcast-Moduls
Dieser Abschnitt beschreibt, wie Sie das CellBroadcast-Modul integrieren.
Integrieren mit Einstellungen
Sie können entscheiden, wo die CellBroadcast-Einstellungen in der App „Einstellungen“ integriert werden sollen (Endbenutzer greifen auf die Seite „CellBroadcast-Einstellungen“ über Einstellungen > Apps & Benachrichtigungen > Erweitert > Notfallalarm zu ). Um die CellBroadcastReceiver-App aus der Einstellungs-App zu starten, ändern Sie die folgenden Einstellungskonfigurationen mit dem Paketnamen com.google.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.google.android.cellbroadcastreceiver</string>
Integration mit Messaging-Apps
Sie können einen App-Link in Messaging-Apps integrieren, um den CellBroadcast-Nachrichtenverlauf zu öffnen. In der Android-Messaging-App wurde dies in Einstellungen > Erweitert > Notfallalarm integriert. Um einen Link in Ihre eigene Messaging-App zu integrieren, definieren Sie den Pfad in der Messaging-App und konfigurieren Sie den Komponentennamen für das CellBroadcast-Modul als com.google.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Integration mit SMS-Posteingang
Sie können die Anzeige von CellBroadcast-Nachrichten in der Standard-Messaging-App aktivieren, indem Sie die folgende Konfiguration mit einem Laufzeitressourcen-Overlay überschreiben.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Da das Erteilen von Berechtigungen außerhalb des Bereichs des CellBroadcast-Moduls liegt, müssen Sie dem AppOpsManager.OP_WRITE_SMS
-Modul die Berechtigung AppOpsManager.OP_WRITE_SMS erteilen, um End-to-End-Unterstützung bereitzustellen. Eine AOSP-Referenzimplementierung finden Sie in diesem SmsApplication.java
Patch .
Starten der CellBroadcastReceiver-App
Die CellBroadcastReceiver-App hat die folgenden Startpunkte.
Das App-Menü „Einstellungen“.
Eine App (einschließlich Apps von Drittanbietern), wie z. B. eine Nachrichten-App, die mit dem CellBroadcast-Nachrichtenverlauf verknüpft ist.
(Optional) Ein vom OEM hinzugefügtes Startsymbol auf dem Android-Startbildschirm. Einzelheiten finden Sie unter Hinzufügen eines Startsymbols .
Die folgenden Screenshots zeigen das Einstellungsmenü der CellBroadcastReceiver-App.
Abbildung 2. Einstellungsmenü der CellBroadcastReceiver-App
Abbildung 3. Verlaufsbildschirm für Notfallwarnungen
Hinzufügen von Startsymbolen
Sie können den Zugriff auf den CellBroadcast-Nachrichtenverlauf über das App-Startprogramm und über Ihre eigenen Startsymbole aktivieren.
Um den Zugriff auf den Nachrichtenverlauf über das App-Startprogramm zu ermöglichen, überschreiben Sie die folgende Konfiguration mit einem RRO.
<item type="bool" name="show_message_history_in_launcher" />
Um das AOSP-Standardsymbol zu überschreiben, überschreiben Sie die folgende Konfiguration mit einem RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Aktivieren des CMAS-Geheimcodes
Um den CMAS-Geheimcode *#*#CMAS#*#* ( *#*#2627#*#* auf dem Tastenfeld) zu aktivieren, muss eine Dialer-App auf den speziellen Dialer-Code in Form von *#*# warten . code #*#* und verarbeiten Sie den Code mit der öffentlichen Methode sendDialerSpecialCode
.
Gebietsinfo-Anforderung: Kanal 50
Kanal 50 ist ein spezieller Kanal für Netzbetreiber, um gebietsbezogene Informationen auszusenden (außer MTN in Südafrika). Für diesen Kanal führen Broadcast-Nachrichten nicht zu einem Popup-Dialogfeld oder einer Benachrichtigung. Stattdessen werden Broadcast-Nachrichten im SIM-Status des Einstellungsmenüs oder in der Statusleiste angezeigt (z. B. Anzeige einer Postleitzahl).
Die Android-CellBroadcastService-Implementierung bietet Unterstützung für die folgenden APIs im Cell Broadcast-Dienst für die Apps „Einstellungen“ und „SysUI“, um die Broadcast-Channel-50-Informationen abzurufen. Um dies zu implementieren, gehen Sie wie folgt vor:
Registrieren Sie Broadcast
android.telephony.action.AREA_INFO_UPDATED
und überschreiben Sie den Empfängerpaketnamenconfig_area_info_receiver_packages
durch ein RRO.An
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Da die Apps „Einstellungen“ und „SysUI“ außerhalb des Bereichs des CellBroadcast-Moduls liegen, müssen Sie Ihre Änderungen in der SystemUI oder der App „Einstellungen“ implementieren, um End-to-End-Unterstützung bereitzustellen. Eine Referenzimplementierung finden Sie in der App CellBroadcastService Settings .
Anpassen
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) (z. B. können Sie die Farbe von Benachrichtigungen und Abmessungen in Dialogfeldern anpassen). Um die Standardwerte der im CellBroadcast-Modul verwendeten Parameter zu überschreiben, ändern Sie den Zielpaketnamen in com.google.android.cellbroadcastreceiver
. Zusätzlich:
Eine Liste überlagerbarer Konfigurationen finden Sie unter
overlayable.xml
.Eine beispielhafte Implementierung finden Sie unter
RROSampleTestApp
in AOSP.
Wenn der Implementierung UI-String-Übersetzungsressourcen fehlen oder die Übersetzungen nicht Ihren Erwartungen entsprechen, können Sie Übersetzungsressourcen mit einem RRO überschreiben oder mit dem Google-Übersetzungsteam zusammenarbeiten, um String-Übersetzungen an das CellBroadcast-Modul hochzuladen. Wenn Sie die Übersetzungsressourcen überschreiben, muss Google diese Zeichenfolgen in overlayable.xml
, um das Überschreiben zu ermöglichen. Wenn Sie weitere Konfigurationen für die Anpassung der Benutzeroberfläche benötigen, wenden Sie sich an die CellBroadcast-Supportgruppe .
Migrieren von Daten
Android 11 enthält eine ältere CellBroadcast-App, die ein Mechanismus zum Aufbewahren und Migrieren von App-Daten (einschließlich Benutzereinstellungen und Notfallalarmverläufen) für Geräte ist, die auf das CellBroadcast-Modul aktualisieren. Android-Implementierungen, die das CellBroadcast-Modul verwenden, sollten die Legacy-CellBroadcast-App in ihrem Build für die Datenmigration enthalten. Wenn Ihre Implementierung eine benutzerdefinierte CellBroadcast-Lösung verwendet, sollten Sie ein CellBroadcastContentProvider-APK definieren, um Daten beizubehalten (Sie können das ältere Cell Broadcast-APK 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 dem OEM-definierten CellBroadcastContentProvider APK über die klar definierte cellbroadcast-legacy
Autorität ab.
Beim Definieren einer CellBroadcastContentProvider-APK muss die 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 und für Apps von Drittanbietern nicht zugänglich ist.Das APK wird vom OEM entwickelt und gehört ihm, wobei der OEM weiterhin sein verstecktes API-Schema hosten kann.
Um SharedPreferences
zum CellBroadcast-Modul zu migrieren, muss das CellBroadcastContentProvider APK die Methode ContentProvider.call
) mit den folgenden Parametern unterstützen:
- Autorität:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Methode:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
Dies ist eine Liste unterstützter gemeinsamer Präferenzschlüssel für das CellBroadcast-Modul. Die Daten stammen aus
SharedPreferences
für die MethodeContentProvider.call
.
Um den Nachrichtenverlauf zum CellBroadcast-Modul zu migrieren, muss das CellBroadcastContentProvider APK die ContentProvider.query
Methode mit den folgenden Parametern unterstützen:
- Autorität:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Abfragespalten listen unterstützte Nachrichteneigenschaften für das CellBroadcast-Modul auf. Nimmt Daten (aus Ihrer Datenbank) für die MethodeContentProvider.query
auf.
Eine Referenzimplementierung für CellBroadcastContentProvider,
unter LegacyCellBroadcastContentProvider
.
Testen
Die Android Compatibility Test Suite (CTS) verifiziert die Funktionalität von App-abhängigen System-APIs. Sie können auch unit tests/testappsp
CellBroadcast-Moduls ausführen.
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 sind 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.
Nachrichten zeigen alle verfügbaren Parameter an, einschließlich Seriennummer, Nachrichten-ID und Ablaufdatum.
Um den Debug-Modus zu aktivieren, wählen Sie *#*#CMAS#*#* auf dem Dialer.
Kontakt
Wenden Sie sich für weitere Einzelheiten oder Fragen zum CellBroadcast-Modul an die CellBroadcast-Supportgruppe .