Auf Android-Geräten ohne Datenvolumen ist Netzwerk-Traffic möglich. Daher müssen Mobilfunkanbieter und Telekommunikationsunternehmen entsprechende Protokolle zur Risikominderung implementieren. Android bietet eine allgemeine Lösung, mit der Mobilfunkanbieter angeben können, wenn das Guthaben eines Geräts aufgebraucht ist.
Die Android-Plattform bietet eine Standard-Carrier-App mit einem Standardverhalten für die Traffic-Reduzierung basierend auf dem Signal zur Erkennung von Captive Portals. Außerdem bietet es Mobilfunkanbietern und OEMs die Möglichkeit, das Verhalten kostengünstig und flexibel anzupassen.
Beispiele und Quelle
Die Standard-Carrier-App befindet sich unter platform/frameworks/base/packages/CarrierDefaultApp/.
.
Implementierung
Die Standard-Carrier-App ist so konfiguriert, dass sie eine bessere Nutzung für nicht konfigurierte Carrier ermöglicht. Mobilfunkanbieter können dieses Standardverhalten nutzen. Sie können das Standardverhalten auch überschreiben, indem sie der XML-Datei der Carrier-Konfiguration Signal-Aktions-Zuweisungen hinzufügen. Sie können sich entscheiden, die Standard-App nicht zu verwenden, und stattdessen UICC-Berechtigungen mit ihrer eigenen eigenständigen Carrier-App nutzen.
Einführung in die Implementierung
Signals
Das Android-Framework unterstützt die Konfiguration von Aktionen für die folgenden parametrisierten Signale:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
Diese Signale befinden sich in frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
.
Unterstützte Aktionen
Die Standard-Carrier-App definiert eine Reihe unterstützter Aktionen, die unterstützten Signalen zugeordnet werden können. Diese werden in CarrierActionUtils.java
definiert:
public static final int CARRIER_ACTION_ENABLE_METERED_APNS = 0; public static final int CARRIER_ACTION_DISABLE_METERED_APNS = 1; public static final int CARRIER_ACTION_DISABLE_RADIO = 2; public static final int CARRIER_ACTION_ENABLE_RADIO = 3; public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION = 4; public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5; public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS = 6;
Hinweis:Wenn ein Mobilfunkanbieter eine eigene eigenständige App implementiert, kann er Unterstützung für andere Signale als die in diesem Abschnitt genannten implementieren. Sie können auch eigene Aktionen definieren und konfigurieren.
Standardzuordnungen von Signalen zu Aktionen
So konfigurieren Sie Standardaktionen:
- Schlüssel für unterstützte Signale definieren
Die Standardzuordnungen von Signalen zu Aktionen sind in
CarrierConfigManager.java
definiert. Jedes der unterstützten Signale hat einen Schlüssel:public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array"; public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
- Standardaktionen mit Signalschlüsseln verknüpfen
Die Standard-Aktions-IDs sind den Signalschlüsseln zugeordnet:
sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY, new String[]{ "1, 4" //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION // 4: CARRIER_ACTION_DISABLE_METERED_APNS });
Das Telefonie-Framework ordnet diese Aktionen den entsprechenden Signalen zu.
Standardaktionen überschreiben
Sie können benutzerdefinierte Aktionen für unterstützte Signale in der XML-Datei der Carrier-Konfiguration definieren, indem Sie Aktions-IDs den Signal-Keys zuordnen, die in CarrierConfigManager.java
definiert sind. Das folgende Mapping deaktiviert beispielsweise APNs mit Messung und zeigt bei der Weiterleitung eine Portalbenachrichtigung an:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2"> <item value="1" /> <item value="4" /> </string-array>
Das Telefonie-Framework lädt diese Konfigurationen und überschreibt Standardaktionen.
Zertifizierungsstufe
Für diese Funktion gibt es keine CTS-, CTS Verifier- oder GTS-Tests.
Führen Sie die folgenden manuellen Validierungstests aus, um die Funktion zu validieren:
- Benachrichtigung des Mobilfunkanbieters über ein Gerät mit ausstehenden Zahlungen bestätigen
- Prüfen Sie, ob die Trafficweiterleitung gedrosselt wird, wenn das Guthaben aufgebraucht ist und WLAN deaktiviert ist.
- Prüfen Sie, ob der Netzwerkverkehr reduziert wird und die Benachrichtigungs-UI angezeigt wird, wenn das Guthaben aufgebraucht ist.
- Sprachanruf-/VoLTE-Funktion bei unzureichendem Guthaben validieren
- Prüfen Sie, ob Videoanrufe bei einem negativen Kontostand blockiert werden.
- Prüfe, ob der Nutzer bei aktiviertem WLAN weiterhin im Web surfen kann und ob der Browsing-Traffic nicht zu Netzwerk-Traffic führt, wenn das Guthaben aufgebraucht ist.
- Prüfe die WLAN-, WFC- und Bluetooth-Funktionen, wenn das Gerät nicht im Gleichgewicht ist.
- Deaktiviere WLAN. Prüfe die Benachrichtigungs-UI für das überschrittene Guthaben und ob normaler Browsing-Traffic nicht zur Registrierungswebsite des Telekommunikationsunternehmens umgeleitet wird. Prüfen Sie, ob der Browser durch Klicken auf den Link in der Benachrichtigungs-UI zur Registrierungswebsite des Telekommunikationsunternehmens weitergeleitet wird.
- Prüfen Sie, ob das Ein- und Ausschalten des Flugzeugmodus den Status der Traffic-Drosselung zurücksetzt.
- Prüfen Sie, ob durch das Tauschen einer aktiven SIM-Karte der Status des Netzwerkverkehrs zurückgesetzt wird.
- Prüfen Sie, ob durch das erneute Einsetzen der SIM-Karte mit dem zu geringen Guthaben die Traffic-Umleitung neu gestartet und die Netzwerk-Traffic-Drosselung wieder aktiviert wird.
- Prüfen Sie, ob durch einen Neustart des Smartphones die Weiterleitung reaktiviert und die Benutzeroberfläche für die Traffic-Drosselung und Benachrichtigungen wieder angezeigt wird.
- Tippen Sie auf die Benachrichtigung „captiveportal“. Prüfen Sie, ob eine Verbindung zu einem eingeschränkten Netzwerk besteht, damit der Nutzer Guthaben hinzufügen kann.
- Prüfen Sie, ob durch das Aufladen des SIM-Guthabens oder die Reaktivierung der Mobilfunknetzverkehr wiederhergestellt wird und der Telco-Link und die Benachrichtigung über das fehlende Guthaben verschwinden.
- Plausibilitätstest nach der Wiederherstellung des Datenservice.
Die Standard-App enthält einige Beispiele für Unittests und ein Skript zum Ausführen dieser Tests (siehe tests/runtest.sh
). Wenn Sie eine benutzerdefinierte Version oder ein benutzerdefiniertes Verhalten implementieren, sollten Sie diese Anpassungen in dedizierten Unittests widerspiegeln.