wie für die Frage Titel, können Sie den Internetzugang überprüfen möchten,
so der schnellste Weg, und es ist zumindest effizient für jetzt,
thnx zu levit auf der Grundlage seiner Antwort https://stackoverflow.com/a/27312494/3818437
Wenn Sie nur nach einer Verbindung zu einem Netzwerk suchen möchten - egal wenn Internet verfügbar ist - dann die meisten der swers hier (einschließlich der akzeptierten), wird die Implementierung von isConnectedOrConnecting() gut funktionieren. Wenn Sie wissen wollen, ob Sie eine Internetverbindung haben (wie die Frage Titel angibt) auf Ping lesen Sie bitte für den Hauptnamen Server
public boolean isOnline() {
Runtime runtime = Runtime.getRuntime();
try {
Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
int exitValue = ipProcess.waitFor();
return (exitValue == 0);
} catch (IOException e) { e.printStackTrace(); }
catch (InterruptedException e) { e.printStackTrace(); }
return false; }
Das ist es! Ja, das ist kurz, ja, es ist schnell, nein, es muss nicht im Hintergrund laufen, nein, Sie brauchen keine Root-Rechte.
Mögliche Fragen
Ist das schnell genug, um wirklich?
Ja, sehr schnell!
Gibt es wirklich keine zuverlässige Möglichkeit zu überprüfen, ob Internet verfügbar ist, andere als etwas im Internet zu testen?
Nicht so weit ich weiß, aber lass es mich wissen, und ich werde meine Antwort bearbeiten.
Konnte ich nicht einfach meine eigene Seite pingen, die ich sowieso anfragen möchte?
Sicher! Sie könnten sogar beide prüfen, wenn Sie unterscheiden zwischen "Internetverbindung verfügbar" und Ihre eigenen Server erreichbar sein möchten
Was passiert, wenn der DNS ist ausgefallen?
Google DNS (z. B. 8.8.8.8) ist der größte öffentliche DNS-Dienst in der Welt. Ab 2013 bedient es 130 Milliarden Anfragen pro Tag. Lassen Sie uns nur sagen, Ihre App würde wahrscheinlich nicht die Rede von der Tag sein.
Welche Berechtigungen sind erforderlich?
Nur Internetzugang - was für eine Überraschung ^^ (? Btw haben Sie jemals darüber nachgedacht, , wie einige der hier vorgeschlagenen Methoden auch einen Remote-Kleber über die availablility von Internet haben könnten, ohne diese Erlaubnis)
Rückgabecode vereinfacht werden kann: 'Netinfo zurückkehren = null && netInfo.isConnected();! ' –