我有一种检测连接状态的方法
boolean isInternetAvailable(WebView view) {
Boolean connected = false;
try {
ConnectivityManager connectivityManager = (ConnectivityManager) view.getContext()
.getSystemService(view.getContext().CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
connected = networkInfo != null && networkInfo.isAvailable() &&
networkInfo.isConnected();
Log.d("available", Boolean.toString(networkInfo.isAvailable()));
Log.d("connected", Boolean.toString(networkInfo.isConnected()));
Log.d("compare", Boolean.toString(networkInfo.getState() == NetworkInfo.State.CONNECTED));
return connected;
} catch (Exception e) {
}
return connected;
}
但是当我从计算机上断开所有互联网电缆,并且我无法实际加载任何页面时,模拟器仍然会认为他连接的是什么并返回
11-21 13:43:22.103 20824-20824/lt.example.app D/available: true
11-21 13:43:22.103 20824-20824/lt.example.app D/connected: true
11-21 13:43:22.103 20824-20824/lt.example.app D/compare: true
到控制台,这个方法在WebViewClient中使用,在使用WebView时检测连接,可以是什么?
答案 0 :(得分:2)
问题是,您的模拟器确实不关心您计算机上的实际连接状态。您可能需要在模拟器上启用/禁用飞行模式以获得正确的结果。
只要您的模拟器启用了wifi /数据,即使您无法访问互联网,它也会告诉您是的,我已经连接。
如果您想检查有效连接,请参阅:Android check internet connection(isInternetAvailable()
)
答案 1 :(得分:0)
尝试创建新对象:
boolean isInternetAvailable(WebView view) {
Boolean connected = false;
try {
ConnectivityManager connectivityManager = (ConnectivityManager) view.getContext()
.getSystemService(view.getContext().CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = new NetworkInfo();
networkInfo=connectivityManager.getActiveNetworkInfo();
connected = networkInfo != null && networkInfo.isAvailable() &&
networkInfo.isConnected();
Log.d("available", Boolean.toString(networkInfo.isAvailable()));
Log.d("connected", Boolean.toString(networkInfo.isConnected()));
Log.d("compare", Boolean.toString(networkInfo.getState() == NetworkInfo.State.CONNECTED));
return connected;
} catch (Exception e) {
}
return connected;
}