2011-04-23 139 views

回答

6

是的,我用isReachable。

public class Extras { 
    public static class Internet { 
     public static boolean isOnline() { 
      try { 
       InetAddress.getByName("google.ca").isReachable(3); 
       return true; 
      } catch (UnknownHostException e){ 
       return false; 
      } catch (IOException e){ 
       return false; 
      } 
     } 
    } 
} 
+1

謝謝,但我在我的情況下,我得到一些INF ormatin與GPS有關,當GSM連接丟失時,我就不好受。我只能將它添加到while(1)循環中並持續檢查互聯網目標是否可到達,這可能會從我的FUP數據限制中「吃掉」。我想知道是否有一些內部檢查,例如,是否可以訪問Internet連接,做些什麼,如果不是,請不要做任何事情 – Waypoint 2011-04-23 14:42:04

1

您可以嘗試重新劃分本地IP地址以檢查設備是否連接到Internet。

for (Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces(); enumeration.hasMoreElements();) { 
     NetworkInterface networkInterface = enumeration.nextElement(); 
     for (Enumeration<InetAddress> enumIpAddress = networkInterface.getInetAddresses(); enumIpAddress.hasMoreElements();) { 
      InetAddress iNetAddress = enumIpAddress.nextElement(); 
      if (!iNetAddress.isLoopbackAddress()) { 
       return iNetAddress.getHostAddress().toString(); 
      } 
     } 
    } 

返回iNetAddress.getHostAddress()。toString();會給你的IP地址。您需要添加權限

<uses-permission android:name="android.permission.INTERNET" /> 

注:如果您在模擬器工作將retun模擬器IP(通常這將是10.0.2.15)

+3

如果你連接到Wifi網絡,這仍然會給你一個本地IP,但你的Wifi路由器可能不是連接到互聯網。 – 2011-06-10 14:32:54

3

我在應用程序之一使用:

private boolean isOnline() { 
    ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo ni = cm.getActiveNetworkInfo(); 
    return (ni != null && ni.isConnected()); 
} 

您將需要這些權限在您的清單文件:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+2

如果有網絡連接,或者如果該網絡連接到Internet,是否會返回? – ForceMagic 2013-10-10 15:54:23

+0

ForceMagic表示如果您的設備在沒有網絡連接的情況下連接到路由器,或者如果您的設備連接到電容網絡或實際網絡,則返回false – murt 2017-09-26 09:51:44