我正在寻找通过WiFi或Cell验证互联网的最佳技术。假设您已连接到某个AP,但如果互联网存在,则现在不会。
今天我使用HttpURLConnection
有两个选项:
还有其他方法吗?
所有建议都将不胜感激。
答案 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(...) 希望它有用。