检查互联网访问Android

时间:2013-12-01 01:43:55

标签: android networking

我找到了一个检查互联网访问的解决方案,但它并不适用于所有设备

How to check internet access on Android? InetAddress never times out

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;
}

此解决方案适用于三星galaxy tab 2 1.10(Android 4.1.2)。

但不适用于HTC野火(Android 2.3.5)

在第二个设备上,netInfo始终为空

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

如下所示文档返回null是因为没有默认网络(数据网络)可用。

看起来只有isConnected()可以帮助您识别它是否已连接。 我尝试了4手机(Sony Ericson,三星(2手机),Nexus Lg),它根据需要显示了完美的效果。

公共NetworkInfo getActiveNetworkInfo ()

在API级别1中添加 返回有关当前活动的默认数据网络的详细信息连接时,此网络是传出连接的默认路由。在启动网络流量之前,您应该始终检查isConnected()。

  

当没有默认网络时,这可能会返回null。

返回 当前默认网络的NetworkInfo对象;如果当前没有网络默认网络,则为null 此方法要求调用保留permission ACCESS_NETWORK_STATE

答案 1 :(得分:0)

这还不够......

使用ConnectivityManager,您可以了解手机是否具有可用的连接(wifi或4G)。但是你不确定你是否真的可以上网(你可以连接到有限连接的wifi点或需要识别。

测试连接后(使用ConnectivityManager),您必须ping一个网站。

以下是解释如何以及如何做的最佳答案: Ping a Server