每当用户点击WebView内的链接时,我想检查用户是否在线。如果用户在线,我将加载URL,否则我将向用户显示Toast并且不做任何其他操作。 (我可以成功检查互联网是否存在this code)
我延长了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);
}