0

每当用户单击 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);
}
4

0 回答 0