Android Überwachung für Netzwerkverbindung / Trennung via Broadcast

Dies ist die Implementierung für die alte Android-API (Android 7 und älter). Es wird BroadcastReceiver + ConnectivityManager + NetworkInfo verwendet, um Netzwerkverbindung und Trennung zu erkennen.

1. Kernwissen

  1. ConnectivityManager: Ein Systemdienstklasse zur Verwaltung des Netzwerkverbindungsstatus.
  2. Berechtigungen: In AndroidManifest.xml muss die Berechtigung für den Netzwerkstatus hinzugefügt werden
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Code-Sprache: HTML, XML (xml)
  1. Funktionsweise: Bei Netzwerkänderungen sendet das System Netzwerk-Broadcasts. Im onReceive-Callback von BroadcastReceiver holt man mit ConnectivityManager die aktuellen Netzwerkinformationen und prüft, ob das Netzwerk verbunden oder getrennt ist.

2. Vollständiger onReceive-Code

public void onReceive(Context context, Intent intent) {
    // Systemdienst für Netzwerkverwaltung abrufen
    ConnectivityManager connectivityManager =
            (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    // Aktives Netzwerk abrufen (veraltete API)
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    if (networkInfo != null) {
        if (networkInfo.isAvailable()) {
            Toast.makeText(context, "Netzwerk verbunden", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(context, "Netzwerk getrennt", Toast.LENGTH_LONG).show();
        }
    } else {
        // networkInfo ist null: Kein Netzwerk
        Toast.makeText(context, "Netzwerk getrennt", Toast.LENGTH_LONG).show();
    }
}
Code-Sprache: JavaScript (javascript)

3. Wichtiger Hinweis (Veraltung)

getActiveNetworkInfo() und NetworkInfo sind seit Android 10 (API29) veraltet

Neuere Android-Versionen empfehlen den Callback ConnectivityManager.NetworkCallback zur Netzwerküberwachung. Die alte Variante mit Broadcast + NetworkInfo wird nicht mehr empfohlen.

Nachteile der alten Methode

  1. Ab Android 8.0 (API26) sind statisch registrierte Netzwerkstatus-Broadcasts eingeschränkt. Statische Registrierung empfängt keine Netzwerkänderungen; der Empfänger muss dynamisch registriert werden.
  2. Die Klasse NetworkInfo ist veraltet. Direkte Aufrufe in neuen Systemen erzeugen Warnungen oder schlagen fehl.

4. Dynamische Registrierung des BroadcastReceivers

// Broadcast-Empfänger definieren
public class NetReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Der obige Netzwerkprüfcode kommt hier hin
    }
}
// Dynamische Registrierung in der Activity
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
NetReceiver receiver = new NetReceiver();
registerReceiver(receiver, filter);
Code-Sprache: PHP (php)

Android Überwachung für Netzwerkverbindung / Trennung via Broadcast

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert