Mobilfunkübertragung

Das CellBroadcast-Modul reduziert repetitive Aufgaben für OEMs (was wiederum die Fragmentierung im Android-System verringert und für Endnutzer ein einheitliches Verhalten ermöglicht) und hilft, die Tests und Zertifizierungen von Mobilfunkanbietern für CellBroadcast-bezogene Anforderungen zu optimieren, da der Code nicht von OEMs geändert werden kann. Dieses Modul kann aktualisiert werden, d. h. es kann außerhalb des normalen Android-Releasezyklus Funktionsupdates erhalten.

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 3.0 (Wireless Emergency Alert), Duplikatprüfungen von Nachrichten und das Senden von Nachrichten an Apps. Es ist ein 1:n-Messagingdienst mit geografischer Ausrichtung und Geofence, mit dem Nachrichten gleichzeitig an mehrere Smartphone-Nutzer in einem bestimmten Gebiet gesendet werden können. Der Dienst wird vom ETSI GSM-Ausschuss, 3GPP, definiert und ist Teil der Telekommunikationsstandards.

  • Die App CellBroadcastReceiver ist eine Standardsystem-App, die Notfall- und Nichtnotwendigkeitswarnungen (z. B. Gelb- und Präsidentschaftswarnungen) verarbeitet und Endnutzern die Informationen gemäß den Vorschriften des Mobilfunkanbieters und regionalen Vorschriften bereitstellt.

CellBroadcast-Nachrichtenfluss

Die folgende Abbildung zeigt den Nachrichtenfluss von CellBroadcast.

Nachrichtenfluss von CellBroadcastReceiver

Abbildung 1. Nachrichtenfluss von CellBroadcastReceiver

  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 CellBroadcastReceiver-System-App weiter.

  4. Die CellBroadcastReceiver-App zeigt dem Nutzer die Nachricht an.

Modulformat

Die CellBroadcastService- und die CellBroadcastReceiver-App sind in einer einzelnen 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 über stabile @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 Laufzeitressourcen-Overlays (RROs) anpassen.

Berechtigungskonfiguration

Das CellBroadcast-Modul ist mit einer Google-Signatur und nicht mit einer Plattformsignatur signiert. Dies bedeutet, dass das Modul keinen Zugriff mehr auf Signaturberechtigungen hat. 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. Mit dieser Berechtigung hat die App „CellBroadcastReceiver“ vollen Zugriff auf die Datenbank in „CellBroadcastService“.

Die Plattform gewährt der android.permission.READ_CELL_BROADCASTS-Laufzeit der Standard-SMS-App des Systems die Berechtigung zum Zugriff auf den Verlauf der Notfallwarnungen.

CellBroadcast-Modul integrieren

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

In die Einstellungen einbinden

Sie können festlegen, wo die Einstellungen für CellBroadcasts in den Einstellungen integriert werden sollen. Endnutzer rufen die Seite mit den CellBroadcast-Einstellungen unter Einstellungen > Apps & Benachrichtigungen > Erweitert > Notfallbenachrichtigung auf. Wenn Sie die App „CellBroadcastReceiver“ über die Einstellungen starten möchten, ändern Sie die folgenden Konfigurationen 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 Nachrichtenverlauf von CellBroadcasts zu öffnen. In der Android Messaging-App wurde dies unter Einstellungen > Erweitert > Notfallbenachrichtigung integriert. 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.

Mit SMS-Posteingang integrieren

Sie können die Anzeige von CellBroadcast-Nachrichten in der Standard-Messaging-App aktivieren, indem Sie die folgende Konfiguration mit einem Laufzeit-Ressourcen-Overlay überschreiben.

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

Da die Erteilung von Berechtigungen nicht in den Zuständigkeitsbereich des CellBroadcast-Moduls fällt, müssen Sie dem CellBroadcast-Modul die Berechtigung AppOpsManager.OP_WRITE_SMS gewähren, um einen End-to-End-Support zu ermöglichen. Eine AOSP-Referenzimplementierung finden Sie in diesem SmsApplication.java-Patch.

CellBroadcastReceiver-App starten

Die App „CellBroadcastReceiver“ hat die folgenden Startpunkte.

  • Das Menü der Einstellungen

  • Eine App (einschließlich Drittanbieter-Apps), z. B. eine Nachrichten-App, die mit dem CellBroadcast-Nachrichtenverlauf verknüpft ist.

  • Optional: Ein Startsymbol vom Android-Startbildschirm, das vom OEM hinzugefügt wurde. Weitere Informationen finden Sie unter Startsymbol hinzufügen.

Einstellungen der CellBroadcastReceiver App

Die folgenden Screenshots zeigen das Menü „Einstellungen“ der App „CellBroadcastReceiver“.

Menü „Einstellungen der App CellBroadcastReceiver“

Abbildung 2. Menü „Einstellungen der App CellBroadcastReceiver“

Bisherige Notfall­benachrichtigungen

Abbildung 3 Bildschirm „Bisherige Notfallbenachrichtigungen“

Startsymbole hinzufügen

Sie können 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 einer RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Wenn Sie das Standardsymbol von AOSP überschreiben möchten, überschreiben Sie die folgende Konfiguration mit einer RRO.

    <!-- Customize launcher icon for cellbroadcast history -->
    <item type="mipmap" name="ic_launcher_cell_broadcast" />
    

CMAS-Sicherheitscode aktivieren

Zum Aktivieren des CMAS-Geheimcodes *#*#CMAS#*#* (*#*#2627#*#* auf der Wähltastatur) muss eine Telefon-App den speziellen Telefoncode in Form von *#*#code#*#* überwachen und den Code mit der öffentlichen Methode sendDialerSpecialCode verarbeiten.

Anforderung an Informationen zu Gebieten: Channel 50

Channel 50 ist ein spezieller Kanal, über den Mobilfunkanbieter standortbezogene Informationen senden können (außer MTN in Südafrika). Für diesen Kanal führen gestreamte Nachrichten nicht zu einem Dialogfeld oder einer Benachrichtigung. Stattdessen werden Broadcast-Nachrichten im SIM-Status des Einstellungsmenüs oder in der Statusleiste angezeigt (z. B. eine Postleitzahl).

Die Android CellBroadcastService-Implementierung unterstützt die folgenden APIs im Cell Broadcast-Dienst, damit die Einstellungen- und SysUI-Apps Informationen zu Broadcast-Kanal 50 abrufen können. So implementieren Sie diese Funktion:

  • Registriere die Übertragung android.telephony.action.AREA_INFO_UPDATED und überschreibe den Namen des Empfängerpakets config_area_info_receiver_packages über eine RRO.

  • Binden Sie an CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE.

Da die Einstellungen und die SysUI-Apps nicht zum CellBroadcast-Modul gehören, müssen Sie Ihre Änderungen in der SystemUI oder in den Einstellungen implementieren, um einen End-to-End-Support zu ermöglichen. Eine Referenzimplementierung finden Sie in der App „CellBroadcastService Settings“.

Personalisierung

Sie können den Quellcode des CellBroadcast-Moduls nicht direkt ändern. Mit Runtime Resource Overlays (RROs) können Sie jedoch Parameter aktivieren oder 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 Namen des Zielpakets in com.android.cellbroadcastreceiver. Darüber hinaus gilt Folgendes:

Wenn in der Implementierung Ressourcen für die Übersetzung von UI-Strings fehlen oder die Übersetzungen nicht Ihren Erwartungen entsprechen, können Sie Übersetzungsressourcen mithilfe einer RRO überschreiben oder mit dem Google-Übersetzungsteam zusammenarbeiten, um Stringübersetzungen an das CellBroadcast-Modul weiterzuleiten. Wenn Sie die Übersetzungsressourcen überschreiben, muss Google diese Strings in overlayable.xml freigeben, damit das Überschreiben möglich ist. Wenn Sie weitere Konfigurationen für die Anpassung der Benutzeroberfläche benötigen, wenden Sie sich an die CellBroadcast-Supportgruppe.

Daten migrieren

Android 11 enthält eine alte CellBroadcast-App, mit der App-Daten (einschließlich Nutzereinstellungen und Notfallwarnungsverläufe) für Geräte, die auf das CellBroadcast-Modul umstellen, beibehalten und migriert werden können. Android-Implementierungen, die das CellBroadcast-Modul verwenden, sollten die alte CellBroadcast-App in ihren Build für die Datenmigration einschließen. Wenn Sie in Ihrer Implementierung eine benutzerdefinierte CellBroadcast-Lösung verwenden, sollten Sie ein CellBroadcastContentProvider-APK definieren, um Daten zu erhalten. Sie können das alte CellBroadcast-APK in einer nachfolgenden Version problemlos entfernen.

Auf Geräten, die auf das CellBroadcast-Modul umgestellt wurden, ruft das Modul Daten entweder über die AOSP LegacyCellBroadcastApp oder die vom OEM definierte CellBroadcastContentProvider APK über die genau definierte cellbroadcast-legacy-Autorität ab.

OEM-definiertes CellBroadcastContentProvider-APK verwenden

Bei der Definition eines CellBroadcastContentProvider-APKs muss das 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. Es ist nicht für Drittanbieter-Apps zugänglich.

  • Die APK wird vom OEM entwickelt und gehört ihm. Dort kann er sein ausgeblendetes API-Schema weiterhin hosten.

Wenn Sie SharedPreferences zum CellBroadcast-Modul migrieren möchten, muss die CellBroadcastContentProvider-APK die Methode ContentProvider.call mit den folgenden Parametern unterstützen:

  • Behörde: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Methode: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Arg: @SystemAPI CellBroadcast.Preference

    Hier finden Sie eine Liste der unterstützten Schlüssel für freigegebene Einstellungen für das CellBroadcast-Modul. Die Daten stammen aus SharedPreferences für die Methode ContentProvider.call.

Wenn Sie den Nachrichtenverlauf in das CellBroadcast-Modul migrieren möchten, muss das CellBroadcastContentProvider-APK die Methode ContentProvider.query mit den folgenden Parametern unterstützen:

  • Zertifizierungsstelle:@SystemAPI CellBroadcast.LEGACY_CONTENT_URI. In den Abfragespalten sind die unterstützten Nachrichteneigenschaften für das CellBroadcast-Modul aufgeführt. 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) prüft die Funktionalität von app-abhängigen System-APIs. Sie können auch das CellBroadcast-Modul unit tests/testappsp ausführen.

Wenn der OEM den geheimen CMAS-Code für ein Gerät aktiviert hat, kann dieses Gerät den Debug-Modus mit den folgenden Funktionen unterstützen.

  • Testwarnungen werden unter Sonstige Benachrichtigungen mit einer Ein-/Aus-Schaltfläche gruppiert.

  • Der Verlauf enthält alle empfangenen Nachrichten, die nicht angezeigt wurden, z. B. doppelte Nachrichten oder Nachrichten in einer anderen Sprache.

  • Die Nachrichten zeigen alle verfügbaren Parameter an, einschließlich Seriennummer, Nachrichten-ID und Ablaufdatum.

Wählen Sie in der Telefon App *#*#CMAS#*#*, um den Debug-Modus zu aktivieren.

Kontakt

Weitere Informationen oder Fragen zum CellBroadcast-Modul richten Sie bitte an die CellBroadcast-Supportgruppe.