CellBroadcast

Das CellBroadcast-Modul reduziert den sich wiederholenden Aufwand für OEMs (was wiederum die Fragmentierung im gesamten Android-Ökosystem verringert und den Endbenutzern ein konsistentes Verhalten bietet) und trägt dazu bei, Netzbetreibertests und Zertifizierung für CellBroadcast-bezogene Anforderungen zu rationalisieren (da der Code von OEMs nicht geändert werden kann). ). Dieses Modul ist aktualisierbar, was bedeutet, dass es außerhalb des normalen Android-Release-Zyklus Funktionsaktualisierungen erhalten kann.

Paketformat

Das CellBroadcast-Modul besteht aus dem folgenden Dienst und der folgenden App.

  • Der CellBroadcastService- Dienst unterstützt die SMS-Dekodierung von CellBroadcast, Geofencing für Wireless Emergency Alert (WEA) 3.0, Überprüfungen von Nachrichtenduplikaten und das Senden von Nachrichten an Apps. Dabei handelt es sich um einen One-to-Many-Messaging-Dienst mit Geotargeting und Geofencing, der darauf ausgelegt ist, Nachrichten gleichzeitig an mehrere Mobiltelefonbenutzer in einem definierten Bereich zu übermitteln. Der Dienst wird vom ETSI- GSM-Komitee 3GPP definiert und ist Teil der Telekommunikationsstandards.

  • Die CellBroadcastReceiver -App ist eine Standardsystem-App, die Notfall- und Nicht-Notfallwarnungen (z. B. Amber- und Präsidentenwarnungen) verarbeitet und die Informationen den Endbenutzern basierend auf Netzbetreiber- 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 nach packages/modules/CellBroadcastService .

Modulabhängigkeiten

Das CellBroadcast-Modul interagiert mit dem Framework nur über stabile @SystemApi (keine @hide APIs) und ist auf die folgenden statischen Bibliotheken angewiesen.

  • 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 im CellBroadcast-Modul; 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 in CellBroadcastService.

Die Plattform gewährt der Standard-System-SMS-App die Laufzeitberechtigung android.permission.READ_CELL_BROADCASTS für den Zugriff auf den Verlauf von Notfallwarnungen.

Integration des CellBroadcast-Moduls

In diesem Abschnitt wird beschrieben, wie Sie das CellBroadcast-Modul integrieren.

Integration mit Einstellungen

Sie können entscheiden, wo Sie CellBroadcast-Einstellungen in die Einstellungen-App integrieren möchten (Endbenutzer greifen auf die Seite mit den CellBroadcast-Einstellungen über Einstellungen > Apps & Benachrichtigungen > Erweitert > Notfallalarm zu). Um die CellBroadcastReceiver-App über die Einstellungen-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 Nachrichtenverlauf von CellBroadcast zu öffnen. In der Android-Messaging-App wurde dies unter 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 mithilfe eines Laufzeitressourcen-Overlays überschreiben.

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

Da die Erteilung von Berechtigungen außerhalb des Bereichs des CellBroadcast-Moduls liegt, müssen Sie dem CellBroadcast-Modul die AppOpsManager.OP_WRITE_SMS Berechtigung 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 verfügt über die folgenden Startpunkte.

  • Das Menü der App „Einstellungen“.

  • Eine App (einschließlich Apps von Drittanbietern), beispielsweise eine Nachrichten-App, die mit dem Nachrichtenverlauf von CellBroadcast verknüpft ist.

  • (Optional) Ein vom OEM hinzugefügtes Startsymbol auf dem Android-Startbildschirm. Einzelheiten finden Sie unter Hinzufügen eines Startsymbols .

Einstellungen der CellBroadcastReceiver-App

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

Einstellungsmenü der CellBroadcastReceiver-App

Abbildung 2. Einstellungsmenü der CellBroadcastReceiver-App

Verlauf der Notfallwarnungen

Abbildung 3. Bildschirm mit dem Verlauf der Notfallwarnungen

Startsymbole hinzufügen

Sie können den Zugriff auf den CellBroadcast-Nachrichtenverlauf über den App-Launcher und über Ihre eigenen Startsymbole aktivieren.

  • Um den Zugriff auf den Nachrichtenverlauf über den App-Launcher 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 der Wähltastatur) zu aktivieren, muss eine Dialer-App auf den speziellen Dialer-Code in der Form *#*# warten. code #*#* und verarbeiten Sie den Code mit der öffentlichen Methode sendDialerSpecialCode .

Erforderliche Gebietsinformationen: Kanal 50

Kanal 50 ist ein spezieller Kanal für Netzbetreiber zur Ausstrahlung gebietsbezogener Informationen (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 Menüs „Einstellungen“ oder in der Statusleiste angezeigt (z. B. mit der Anzeige einer Postleitzahl).

Die Android CellBroadcastService-Implementierung bietet Unterstützung für die folgenden APIs im Cell-Broadcast-Dienst für die Settings- und SysUI-Apps, 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 über ein RRO.

  • An CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE binden.

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 eine durchgängige Unterstützung zu gewährleisten. Eine Referenzimplementierung finden Sie in der App „CellBroadcastService-Einstellungen“ .

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) (Sie können beispielsweise die Farbe von Benachrichtigungen und Dimensionen in Dialogen anpassen). Um die Standardwerte der im CellBroadcast-Modul verwendeten Parameter zu überschreiben, ändern Sie den Namen des Zielpakets in com.android.cellbroadcastreceiver . Zusätzlich:

Wenn der Implementierung UI-String-Übersetzungsressourcen fehlen oder die Übersetzungen nicht Ihren Erwartungen entsprechen, können Sie Übersetzungsressourcen mithilfe eines 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 Zeichenfolgen in overlayable.xml verfügbar machen, um das Überschreiben zu ermöglichen. 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, bei der es sich um einen Mechanismus zum Beibehalten und Migrieren von App-Daten (einschließlich Benutzereinstellungen und Notfallalarmverläufen) für Geräte handelt, die auf das CellBroadcast-Modul aktualisiert werden. Android-Implementierungen, die das CellBroadcast-Modul verwenden, sollten die ältere CellBroadcast-App in ihren Build für die Datenmigration einbeziehen. Wenn Ihre Implementierung eine benutzerdefinierte CellBroadcast-Lösung verwendet, sollten Sie ein CellBroadcastContentProvider-APK definieren, um Daten beizubehalten (Sie können das alte 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 genau definierte cellbroadcast-legacy Berechtigung ab.

Verwendung eines OEM-definierten CellBroadcastContentProvider APK

Beim Definieren eines CellBroadcastContentProvider-APK muss das APK diesen Spezifikationen entsprechen.

  • Das APK ist ein kopfloses APK, das nur den Inhalt seiner Datenbank und SharedPreferences über ein ContentProvider Objekt mit der Berechtigung cellbroadcast-legacy anzeigt und für Drittanbieter-Apps nicht zugänglich ist.

  • Das APK wird vom OEM entwickelt und ist dessen Eigentümer, 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 der unterstützten gemeinsamen Präferenzschlüssel für das CellBroadcast-Modul. Die Daten stammen aus SharedPreferences für die ContentProvider.call Methode.

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 ContentProvider.query Methode auf.

Eine Referenzimplementierung für CellBroadcastContentProvider, finden Sie unter LegacyCellBroadcastContentProvider .

Testen

Die Android Compatibility Test Suite (CTS) überprüft die Funktionalität appabhängiger System-APIs. Sie können auch unit tests/testappsp des 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 werden unter „Andere Warnungen“ mit einem Ein-/Ausschalter gruppiert.

  • Der Verlauf umfasst alle Nachrichten, die empfangen, aber nicht angezeigt wurden, beispielsweise 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#*#* im Dialer.

Kontakt

Für weitere Details oder Fragen zum CellBroadcast-Modul wenden Sie sich an die CellBroadcast-Supportgruppe .