Dies ist die Implementierung für die alte Android-API (Android 7 und älter). Es wird BroadcastReceiver +
ConnectivityManager+NetworkInfoverwendet, um Netzwerkverbindung und Trennung zu erkennen.
1. Kernwissen
- ConnectivityManager: Ein Systemdienstklasse zur Verwaltung des Netzwerkverbindungsstatus.
- Berechtigungen: In
AndroidManifest.xmlmuss die Berechtigung für den Netzwerkstatus hinzugefügt werden
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Code-Sprache: HTML, XML (xml)
- Funktionsweise: Bei Netzwerkänderungen sendet das System Netzwerk-Broadcasts. Im
onReceive-Callback vonBroadcastReceiverholt man mitConnectivityManagerdie 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.NetworkCallbackzur Netzwerküberwachung. Die alte Variante mit Broadcast + NetworkInfo wird nicht mehr empfohlen.
Nachteile der alten Methode
- 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.
- Die Klasse
NetworkInfoist 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