2

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

今天我有两个选择HttpURLConnection

  • 从cdn服务器下载文件
  • 向 google.com 等信任网页发送请求并获得响应 200。

还有其他方法吗?

所有建议将不胜感激。

4

3 回答 3

1

请参阅电话管理器,它的 getDataSate() 方法有四种状态

DATA_DISCONNECTED
DATA_CONNECTING
DATA_CONNECTED
DATA_SUSPENDED

你可以得到电话管理器的实例——

 TelephonyManager tm = (TelephonyManager)getSystemService(Telephony_Service); 
于 2012-10-24T14:52:25.173 回答
1

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

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

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

当然,正如您评论的那样,检查各种基于 Internet 的应用程序也无妨;它只是等效技术的另一种形式。

于 2012-10-24T14:54:51.120 回答
0

这里是:

查看蜂窝网络上的数据连接状态

对于 WIFI,我会使用这个公共类 WifiInfo。从那里您可以使用 getIpAddress() 或getDetailedStateOf(...) 希望对您有所帮助。

于 2012-10-24T15:02:23.253 回答