Android - 检查设备是否已连接到互联网

时间:2011-04-23 14:35:16

标签: android

有什么简单的方法,如何检查设备是否主动连接到互联网(=通过GPRS,EDGE,UMTS,HSDPA或Wi-Fi连接)?

由于

3 个答案:

答案 0 :(得分: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 :(得分: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 :(得分: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" />

注意:如果您在Emulator中工作,它将重新调用仿真器IP(通常为10.0.2.15)