Penso che se si desidera solo per il ping di un URL, è possibile utilizzare questo codice:
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();
}
E, se si desidera per avere l'equivalente di un ping, puoi inserire un System.currentTimeMillis() prima e dopo la chiamata e calcolare la differenza.
speranze che aiuta
frammento di codice trovati in here
Ciò sta funzionando bene per me tranne che per Android 4 dispositivi in cui viene a mancare sempre. Qualche idea? – dee
È necessario spostare la chiamata dalla discussione principale. Android 4 non applica alcuna chiamata di rete sul thread principale per prevenire problemi di ANR. –
Stabilirà una connessione TCP con un handshake completo a 3 vie. Quindi il tempo non è niente come un ping ('ICMP-echo -> ICMP-reply') –