我找到了一个检查互联网访问的解决方案,但它并不适用于所有设备
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始终为空
感谢您的帮助
答案 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