Geräteverhalten für Nutzer mit unzureichendem Datenvolumen anpassen

Android-Geräte ohne Datenlimit lassen Netzwerkverkehr zu, sodass Mobilfunkanbieter und Telekommunikationsunternehmen Mitigation-Protokolle implementieren müssen. Android implementiert eine generische Lösung, mit der Mobilfunkanbieter und Telekommunikationsunternehmen angeben können, wenn das Guthaben eines Geräts aufgebraucht ist.

Die Android-Plattform bietet eine Standard-Mobilfunkanbieter-App mit einem Standardverhalten für die Traffic-Reduzierung basierend auf dem Captive-Portal-Erkennungssignal. Außerdem bietet es Mobilfunkanbietern und OEMs die Möglichkeit, das Verhalten zu geringen Kosten und mit hoher Flexibilität anzupassen.

Beispiele und Quelle

Die Standard-App des Mobilfunkanbieters befindet sich unterplatform/frameworks/base/packages/CarrierDefaultApp/.

Implementierung

Die Standard-Mobilfunkanbieter-App ist so konfiguriert, dass sie für nicht konfigurierte Mobilfunkanbieter sofort einsatzbereit ist. Mobilfunkanbieter können dieses Standardverhalten verwenden. Sie können das Standardverhalten auch überschreiben, indem Sie der XML-Datei der Mobilfunkanbieterkonfiguration Signal-Aktion-Zuordnungen hinzufügen. Sie können sich dafür entscheiden, die Standard-App nicht zu verwenden und stattdessen UICC-Berechtigungen mit ihrer eigenen eigenständigen Mobilfunkanbieter-App zu verwenden.

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-Mobilfunkanbieter-App definiert eine Reihe unterstützter Aktionen, die auf unterstützte Signale zugeordnet werden können. 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 eigenständige App implementiert, kann er auch andere Signale unterstützen als die in diesem Abschnitt genannten. Sie können auch eigene Aktionen definieren und konfigurieren.

Standardzuordnungen von Signalen zu Aktionen

So konfigurieren Sie Standardaktionen:

  1. Legen Sie einen Schlüssel für unterstützte Signale fest.

    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";
  2. Signaltasten Standardaktionen zuweisen

    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 benutzerdefinierte Aktionen für unterstützte Signale in der XML-Datei der Mobilfunkanbieterkonfiguration definieren, indem Sie den Signalschlüsseln (definiert in CarrierConfigManager.java) Aktions-IDs zuordnen. Mit der folgenden Zuordnung werden beispielsweise kostenpflichtige APNs deaktiviert und bei der Weiterleitung wird eine Portalbenachrichtigung angezeigt:

<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 Standardaktionen.

Zertifizierungsstufe

Für diese Funktion gibt es keine CTS-, CTS-Verifier- oder GTS-Tests.

Verwenden Sie diese manuellen Validierungstests, um die Funktion zu validieren:

  1. Prüfe die Benachrichtigung des Mobilfunkanbieters, dass das Guthaben des Geräts aufgebraucht ist.
  2. Prüfen Sie, ob die Drosselung der Trafficweiterleitung bei einem Ungleichgewicht und deaktiviertem WLAN erfolgt.
  3. Prüfen, ob der Netzwerkverkehr deaktiviert ist und die Benachrichtigungs-UI im Ungleichgewichtsstatus angezeigt wird
  4. Funktion des Sprachanrufs/VoLTE bei negativem Guthaben prüfen
  5. Prüfen Sie, ob Videoanrufe im Status „Nicht ausgeglichen“ blockiert sind.
  6. Prüfen Sie, ob der Nutzer bei aktiviertem WLAN weiter im Web surfen kann und der Browsertraffic nicht den Netzwerkverkehr aktiviert, während sich das Gerät im Unbalanced-Zustand befindet.
  7. Prüfen Sie die WLAN-, WFC- und Bluetooth-Funktionen im Ungleichgewichtsstatus.
  8. Deaktivieren Sie das WLAN. Prüfen Sie die Benutzeroberfläche der Benachrichtigung über ein Ungleichgewicht und ob normaler Browser-Traffic nicht zur Registrierungswebsite des Telekommunikationsunternehmens weitergeleitet wird. Prüfen Sie, ob der Browser durch Klicken auf den Link in der Benachrichtigungs-UI zur Registrierungswebsite des Mobilfunkanbieters weitergeleitet wird.
  9. Prüfen Sie, ob der Status der Traffic-Drosselung nicht zurückgesetzt wird, wenn Sie den Flugmodus aktivieren oder deaktivieren.
  10. Prüfen Sie, ob durch das Austauschen einer in Betrieb befindlichen SIM-Karte der Status des Netzwerktraffics zurückgesetzt wird.
  11. Prüfen Sie, ob die Traffic-Weiterleitung durch das erneute Einsetzen der SIM-Karte mit ungleicher Nutzung wieder gestartet wird und die Drosselung des Netzwerktraffics wieder erfolgt.
  12. Prüfen Sie, ob die Weiterleitung durch einen Neustart des Smartphones reaktiviert wird und die Traffic-Drosselung und die Benachrichtigungs-UI wieder angezeigt werden.
  13. 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.
  14. Prüfen Sie, ob durch das Aufladen des SIM-Guthabens oder die Reaktivierung der Traffic im Mobilfunknetz wiederhergestellt wird und die Verknüpfung mit dem Mobilfunkanbieter und die Benachrichtigung zum Guthaben verschwinden.
  15. Funktionstest nach der Wiederherstellung des Datendienstes

Die Standard-App enthält einige Beispiele für Unit-Tests und ein Script zum Ausführen derselben (siehe tests/runtest.sh). Wenn Sie eine benutzerdefinierte Version oder ein benutzerdefiniertes Verhalten implementieren, sollten Sie diese Anpassungen in speziellen Unit-Tests widerspiegeln.