我正在实现一个Webview,并希望在断开连接或网络中断时进行检测。。(例如:当设备超出网络范围时)
并且能够在重新建立连接时重新连接。
任何投入都将不胜感激。谢谢
这看起来像是这篇文章的副本。但相关代码块如下。这是一种捕捉错误并相应地更改UI的方法。
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(final WebView view, int errorCode, String description,
final String failingUrl) {
//control you layout, show something like a retry button, and
//call view.loadUrl(failingUrl) to reload.
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
您还可以使用广播接收器收听整个应用程序的网络连接丢失。你可以在这里找到一篇不错的文章。但要点是,您为网络更改注册了一个接收器,然后检查更改是否是断开连接。然后,您可以使用自己的事件总线发送一个可以更新UI的广播。
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable() || mobile.isAvailable()) {
// Do something
Log.d("Network Available ", "Flag No 1");
}
}
}
检查这里:
public boolean isOnline(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
//should check null because in air plan mode it will be null
return (netInfo != null && netInfo.isConnected());
}