我正在尝试确定我的应用程序中是否有活动的互联网连接。我需要知道我是否可以无任何错误地访问网络,有时即使我没有互联网连接,我也会得到“真实”的响应,那是因为我仍然连接到 WiFi 但没有互联网连接。
同时,我的上网查功能是:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
此功能仅检查我是否连接到某个 WiFi 或移动网络,而不实际检查我是否可以访问网络。
所以我添加了下一个功能:
public boolean isInternetAvailable() {
try {
InetAddress ipAddr = InetAddress.getByName("google.com");
return !ipAddr.equals("");
} catch (Exception e) {
return false;
}
}
我不知道为什么,但这个功能总是认为我的互联网连接正常,即使我的路由器没有连接(我在网络栏上有一个黄色的小三角形,表示已连接但没有互联网连接)。
如果连接是真/假,我每次调用此函数时都尝试打印,并且在连接时我得到真,拔下路由器后我得到假 5-10 秒,然后我得到再次为真......(不连接到其他 WiFi 网络)
我试图在 ADB 模拟器和实际设备上对此进行测试,但它们都崩溃了,因为即使我“离线”也试图访问网络。
寻求帮助!非常感谢你。