Konnektivitätsdiagnose-API

Die Connectivity diagnostic API ermöglicht Apps, die Netzwerke besitzen oder verwalten, wie z. B. wie Apps von Mobilfunkanbietern, VPN-Apps und Apps mit WLAN-Vorschlägen, um Diagnoseergebnisse zu erhalten. Informationen zur Netzwerkverbindung vom Framework erhalten. Diese Apps können sich registrieren und Benachrichtigungen mit Verbindungsinformationen für die Netzwerken, die ihnen gehören oder die sie verwalten. Apps erhalten keine Benachrichtigungen für Netzwerke die nicht der App gehören oder von ihr verwaltet werden.

Im Folgenden finden Sie Beispiele für Apps, die Netzwerke verwalten oder besitzen:

  • Mobilfunkanbieter-Apps:Hier können Sie die Mobilfunknetze verwalten, für die Ihr subId hat Mobilfunkanbieter-Berechtigungen für
  • Apps für WLAN-Vorschläge:Sie sind Inhaber von WLAN-Vorschlägen, die dem Nutzer vorgeschlagen werden. System
  • VPN-Apps:Alle vom VPN genutzten Netzwerke verwalten, aber nur, wenn Das ist das aktive VPN

Callbacks werden in den folgenden Fällen aufgerufen:

  • Netzwerkvalidierung:Das System hat die Bewertung eines bestimmten Netzwerks abgeschlossen. Die ConnectivityReport -Klasse Informationen zum aktuellen Status des Netzwerks und Ergebnisse aller Tests oder Verfahren, die im Rahmen der Validierung durchgeführt werden.

    public class ConnectivityReport {
        Network network;
        long reportTimestamp;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle additionalInfo;
    }
    
  • Verdachte Datenverzögerung: Eine Datenverzögerung, also eine Bedingung, bei der IP-Pakete nicht richtig durch das Netzwerk fließen, wird vermutet. Die DataStallReport -Klasse Informationen über verdächtige Datenstände bereitstellt.

    public class DataStallReport {
        Network network;
        long reportTimestamp;
        int detectionMethod;
        LinkProperties linkProperties;
        NetworkCapabilities networkCapabilities;
        PersistableBundle stallDetails;
    }
    
  • Konnektivität gemeldet:Eine App hat eine Verbindung gemeldet über ConnectivityManager#reportNetworkConnectivity an das System gesendet werden. Das Netzwerk und die gemeldete Verbindung (ob die App ob das Netzwerk eine Verbindung herstellt oder nicht, freigegeben ist.

Implementierung

Zur Verwendung der Connectivity diagnostic API muss eine App eine ConnectivityDiagnosticsManager von der Plattform aus. Diese Instanz sollte zum Registrieren und abmelden ConnectivityDiagnosticsCallback Implementierungen. Nicht überschriebene Callback-Methoden sind keine Vorgänge.

Unten sehen Sie ein Beispiel für eine ConnectivityDiagnosticsCallback Implementierung:

public class ExampleCallback extends ConnectivityDiagnosticsCallback {
    @Override
    public void onConnectivityReportAvailable(@NonNull ConnectivityReport report) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }

    @Override
    public void onDataStallSuspected(@NonNull DataStallReport report) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }

    @Override
    public void onNetworkConnectivityReported(
               @NonNull Network network, boolean hasConnectivity) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }
}

Um Rückrufe zu registrieren und Benachrichtigungen zu erhalten, rufen Sie registerConnectivityDiagnosticsCallback Um die Registrierung von Rückrufen aufzuheben und keine Benachrichtigungen mehr zu erhalten, rufe unregisterConnectivityDiagnosticsCallback

Im Folgenden finden Sie ein Beispiel für das Registrieren und Abmelden ConnectivityDiagnosticsCallback:

NetworkRequest request =
        new NetworkRequest.Builder()
                .addTransportType(TRANSPORT_CELLULAR)
                .build();
// Use an Executor that is appropriate for your use case
Executor executor = Executors.newSingleThreadExecutor();

ConnectivityDiagnosticsManager cdm =
        context.getSystemService(ConnectivityDiagnosticsManager.class);

ExampleCallback callback = new ExampleCallback();
cdm.registerConnectivityDiagnosticsCallback(
        request, executor, callback);

... 
// Collect connectivity information on networks that match with request
... 

cdm.unregisterConnectivityDiagnosticsCallback(callback);

Zertifizierungsstufe

Die Connectivity Diagnose-API ist CTS-geprüft von ConnectivityDiagnosticsManagerTest