Android-Geräte ohne Datenguthaben lassen Netzwerkverkehr durch, und Telekommunikationsunternehmen, um Risikominderungsprotokolle zu implementieren. Android implementiert eine allgemeine Lösung, mit der Mobilfunkanbieter und Telekommunikationsunternehmen angeben können, dass das Guthaben aufgebraucht ist.
Die Android-Plattform bietet eine Standard-Mobilfunkanbieter-App mit einem Standardverhalten für Traffic-Minderung auf der Grundlage eines Captive Portal-Erkennungssignals. Außerdem bietet es Anbietern und OEMs die Möglichkeit, das Verhalten mit geringen Kosten und Flexibilität.
Beispiele und Quelle
Die Standard-Mobilfunkanbieter-App befindet sich unter platform/frameworks/base/packages/CarrierDefaultApp/.
Implementierung
Die standardmäßige Mobilfunkanbieter-App ist so konfiguriert, dass sie nicht konfigurierte Mobilfunkanbieter nutzen. Diese Standardeinstellung kann von Mobilfunkanbietern verwendet werden. Sie können das Standardverhalten auch überschreiben, indem sie die XML-Datei für die Konfiguration des Mobilfunkanbieters. Sie können entscheiden, ob sie die Standard-App nutzen stattdessen UICC-Berechtigungen mit ihrer eigenen Mobilfunkanbieter-App.
Einführung in die Implementierung
Signals
Das Android-Framework unterstützt die Konfiguration von Aktionen für folgende Parameter: Signale:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
Diese Signale befinden sich
frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
Unterstützte Aktionen
Die Standard-Mobilfunkanbieter-App definiert eine Reihe unterstützter Aktionen, die zugeordnet werden können
unterstützten Signalen. Diese sind 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 App implementiert, gilt Folgendes: Unterstützung für Signale implementieren, die hier nicht aufgeführt sind. . Sie können auch eigene Aktionen definieren und konfigurieren.
Standardzuordnungen für Signalaktionen
So konfigurieren Sie Standardaktionen:
- Definieren Sie einen Schlüssel für unterstützte Signale.
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";
- Weisen Sie Signaltasten Standardaktionen zu.
Die Standardaktions-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 in der XML-Datei für die Konfiguration des Mobilfunkanbieters benutzerdefinierte Aktionen für unterstützte Signale definieren
indem Sie Aktions-IDs mit den Signalschlüsseln (definiert in
CarrierConfigManager.java
. Die folgende Zuordnung
deaktiviert getaktete APNs und zeigt bei 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 die Standardeinstellungen Aktionen.
Zertifizierungsstufe
Für diese Funktion gibt es keine CTS-, CTS Verifier- oder GTS-Tests.
Mit diesen manuellen Validierungstests können Sie die Funktion validieren:
- Prüfen Sie die Benachrichtigung über ein nicht ausgewogenes Signal des Telekommunikationsgeräts.
- Drosselung der Traffic-Weiterleitung bei Ungleichgewicht und WLAN prüfen deaktiviert.
- Prüfen, ob der Netzwerkverkehr reduziert wird und die Benutzeroberfläche für Benachrichtigungen angezeigt wird des Gleichgewichts sein.
- Sprachanruf/VoLTE-Funktion validieren, wenn die App nicht im Gleichgewicht ist.
- Prüfe, ob Videoanrufe blockiert sind und „Unausgewogen“ ist.
- Wenn WLAN aktiviert ist, prüfen Sie, ob der Nutzer im Web surfen und surfen kann der Netzwerkverkehr den Netzwerkverkehr nicht auslöst, wenn er sich im „Out-of-Balancing“ befindet Bundesstaat.
- WLAN-, WFC- und Bluetooth-Funktionen bei Ungleichgewicht validieren Bundesstaat.
- Deaktivieren Sie WLAN. Überprüfen Sie die Benutzeroberfläche für die Unausgewogenheit und Browsertraffic wird nicht zur Website für die Registrierung von Telekommunikationsanbietern weitergeleitet. Bestätigen Wenn Sie auf den Link in der Benutzeroberfläche klicken, Website zur Registrierung.
- Achten Sie darauf, dass die Traffic-Drosselung durch Wechseln des Flugmodus nicht zurückgesetzt wird Bundesstaat.
- Prüfen, ob beim Austauschen einer im Dienst enthaltenen SIM der Netzwerkverkehr zurückgesetzt wird Bundesstaat.
- Prüfen, ob die Traffic-Weiterleitung neu gestartet wird, wenn die fehlerhafte SIM-Karte wieder eingelegt wird und die Netzwerkverkehrsdrosselung wird wieder gedrosselt.
- Vergewissern Sie sich, dass die Weiterleitung durch einen Neustart des Telefons wieder aktiviert wird. Benutzeroberfläche für Verkehrsdrosselung und Benachrichtigungen.
- Tippe auf das „Captiveportal“ Benachrichtigung. Eingeschränktes Netzwerk bestätigen wird hergestellt, damit der Nutzer Guthabenpunkte hinzufügen kann.
- Prüfe, ob das Auffüllen oder Reaktivieren des SIM-Guthabens zu einem Mobilfunknetz führt und der Telco-Link und keine Guthabenbenachrichtigung. weg sind.
- Integritätstest nach Wiederherstellung des Datendienstes.
Die Standard-App enthält einige Beispiele für Einheitentests und ein Skript zum Ausführen dieser Tests
(siehe tests/runtest.sh
). Wenn Sie eine benutzerdefinierte Version oder
sollten Sie diese Anpassungen
in dedizierten Einheitentests umsetzen.