每当用户单击 WebView 内的链接时,我都想检查用户是否在线。如果用户在线,我将加载 URL,否则我将向用户显示 Toast 并且不执行任何其他操作。(我可以使用此代码成功检查互联网是否存在)
我扩展WebViewClient
并覆盖shouldOverrideUrlLoading()
和onReceivedError()
方法。
但是当用户点击一个链接并且如果没有互联网连接onReceivedError()
被触发。我可以在接收错误时将用户重定向到我的主要活动。但是如果用户按下后退按钮他/她没有看到以前的活动结果,他/她会看到“找不到页面”错误页面。我不希望用户在按下后退按钮时显示此页面。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
boolean isOnline = Util.isOnline(mContext);
if (!isOnline) {
Toast.makeText(mContext, "No internet connection", Toast.LENGTH_SHORT).show();
return true;
} else {
view.loadUrl(url);
return true;
}
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(mContext, "onReceivedError", Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(SecondActivity.this, MyActivity.class);
SecondActivity.this.startActivity(myIntent);
}