2010-05-07 9 views
9

Wie kann ich den Android-Dienst für einen Ping-Rückruf verwenden? Ich muss eine Webseite auf Knopfdruck öffnen, aber im Hintergrund pinge ich eine andere URL für die Statistiksammlung an.Android-Dienst - Ping-URL

-Code-Schnipsel wird

Dank Chris

Antwort

16

Ich denke, sehr hilfreich sein, wenn Sie eine URL nur pingen möchten, können Sie diesen Code verwenden können:

try { 
    URL url = new URL("http://"+params[0]); 

    HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
    urlc.setRequestProperty("User-Agent", "Android Application:"+Z.APP_VERSION); 
    urlc.setRequestProperty("Connection", "close"); 
    urlc.setConnectTimeout(1000 * 30); // mTimeout is in seconds 
    urlc.connect(); 

    if (urlc.getResponseCode() == 200) { 
     Main.Log("getResponseCode == 200"); 
     return new Boolean(true); 
    } 
} catch (MalformedURLException e1) { 
    e1.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Und, wenn Sie wollen Um das Äquivalent eines Ping zu erhalten, können Sie vor und nach dem Aufruf eine System.currentTimeMillis() setzen und die Differenz berechnen.

Hoffnungen, die für mich in here

+0

gefunden

Code-Schnipsel hilft außer für Android 4 Geräte, bei denen es nicht immer Dies wurde gut funktioniert. Irgendwelche Ideen? – dee

+9

Sie müssen den Anruf von Ihrem Hauptthread verschieben. Android 4 erzwingt keine Netzwerkaufrufe im Hauptthread, um ANR-Probleme zu vermeiden. –

+2

Dadurch wird eine TCP-Verbindung mit einem vollständigen 3-Wege-Handshake hergestellt. Also die Zeit ist nichts wie ein Ping (ICMP-Echo -> ICMP-Antwort) –