CellBroadcast

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

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.

Paketformat

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.

CellBroadcast-Nachrichtenfluss

Die folgende Abbildung zeigt den CellBroadcast-Nachrichtenfluss.

CellBroadcastReceiver-Nachrichtenfluss

Abbildung 1. CellBroadcastReceiver-Nachrichtenfluss

  1. Die Funkschnittstellenschicht (RIL) benachrichtigt InBoundSMSHandler über eine CDMA/GSM-CellBroadcast-SMS.

  2. Das Framework leitet die CellBroadcast-SMS an das CBS-Modul weiter, um die eingehende Nachricht zu analysieren und zu verarbeiten.

  3. Nachdem die Nachricht verarbeitet wurde, leitet CellBroadcastService die Absicht an die standardmäßige CellBroadcastReceiver-App des Systems weiter.

  4. Die CellBroadcastReceiver-App zeigt dem Benutzer die Nachricht 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 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 Settings-App zu starten, ändern Sie die folgenden Einstellungskonfigurationen 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 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.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 .

CellBroadcastReceiver-App-Einstellungen

Die folgenden Screenshots zeigen das Einstellungsmenü der CellBroadcastReceiver-App.

Einstellungsmenü der CellBroadcastReceiver-App

Abbildung 2. Einstellungsmenü der CellBroadcastReceiver-App

Verlauf der Notfallwarnungen

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ängerpaketnamen config_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.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.

Verwenden einer OEM-definierten CellBroadcastContentProvider-APK

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 ein ContentProvider -Objekt mit der cellbroadcast-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 Methode ContentProvider.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 Methode ContentProvider.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 .