CellBroadcast

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.

CellBroadcastReceiver-Nachrichtenfluss

Abbildung 1 : CellBroadcastReceiver-Nachrichtenfluss

  1. Die Radio Interface Layer (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 parsen und zu verarbeiten.

  3. Nachdem die Nachricht verarbeitet wurde, leitet CellBroadcastService den Intent an die Standard-CellBroadcastReceiver-App des Systems weiter.

  4. 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-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.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.

Menü „Einstellungen“ der CellBroadcastReceiver-App

Abbildung 2 : Menü mit den Einstellungen der CellBroadcastReceiver-App

Bisherige Warnmeldungen

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_UPDATED und überschreiben Sie den Paketnamen des Empfängers config_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 RROSampleTestApp in 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 ein ContentProvider -Objekt mit der cellbroadcast-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.Preference

    Dies ist eine Liste der unterstützten Schlüssel für gemeinsame Einstellungen für das CellBroadcast-Modul. Die Daten stammen aus SharedPreferences für die ContentProvider.call Methode.

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