如何验证Wifi AP或Cell是否有互联网?

时间:2012-10-24 14:41:32

标签: java android wifi

我正在寻找通过WiFi或Cell验证互联网的最佳技术。假设您已连接到某个AP,但如果互联网存在,则现在不会。

今天我使用HttpURLConnection有两个选项:

  • 从cdn server下载文件
  • 向google.com等信任网页发送请求并获得回复200。

还有其他方法吗?

所有建议都将不胜感激。

3 个答案:

答案 0 :(得分:1)

参见Telephony Manager,它的getDataSate()方法有四个状态

DATA_DISCONNECTED
DATA_CONNECTING
DATA_CONNECTED
DATA_SUSPENDED

您可以获得电话管理员的实例 -

 TelephonyManager tm = (TelephonyManager)getSystemService(Telephony_Service); 

答案 1 :(得分:1)

在某种程度上,“访问互联网端点的能力”相当于“拥有互联网接入”。你可以考虑一些算法:

for (Endpoint site : theEntireInternet) {
    if (can connect to site) return true;
}
return false;

将最终建立连接。换句话说,能够连接到任何一个站点是足够的积极证据,但理论上,您需要枚举每个站点以证明非连接。在实践中,检查几个主要站点显然已足够。否则(没有关于网络,ISP等的某种元信息;这是不可用的)除了......连接到互联网之外,没有办法最终证明“互联网”连接。

当然,正如您所评论的那样,检查各种基于互联网的应用程序也不会受到影响;它只是一种不同形式的等效技术。

答案 2 :(得分:0)

这是:

查看state of the data connection on the cell network

对于WIFI,我会使用此public class WifiInfo。从那里你可以使用getIpAddress()或getDetailedStateOf(...) 希望它有用。