Java Webview通过out会话检查连接

Java Webview通过out会话检查连接,java,android,webview,Java,Android,Webview,我有一个WebView应用程序,需要检查应用程序中的每个“单击”操作是否与Internet连接。我得到了以下代码,用于在应用程序启动时检查互联网。但我需要弄清楚如何在用户每次更改webview中的页面时进行此检查 我的代码: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if(!isN

我有一个WebView应用程序,需要检查应用程序中的每个“单击”操作是否与Internet连接。我得到了以下代码,用于在应用程序启动时检查互联网。但我需要弄清楚如何在用户每次更改webview中的页面时进行此检查

我的代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    if(!isNetworkConnectionAvailable()){
        Context context = getApplicationContext();
        CharSequence text = "Sorry you need an Internet connection!  Please try again when the network" +
                " is available.";
        int duration = Toast.LENGTH_LONG;

        Toast toast = Toast.makeText(context, text, duration);
        toast.show();

        finish();
    }

    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("http://example.com/");

    mWebView.setWebViewClient(new MyAppViewClient());
}
这是我的连接检查代码:

    public boolean isNetworkConnectionAvailable() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 

    if (netInfo != null && netInfo.isConnectedOrConnecting()){ 
        return true;
    }
    else{
        return false;
    } 

}

这可能吗?

我认为您可以通过以下方式检测新的URL加载请求:

private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
我学会了重写该函数,以便单击webview中的链接不会打开新活动。每次用户单击URL时都会调用该函数。我想你可以把你的连接检查逻辑挂在那里

我很好奇为什么你需要检查这个。如果没有连接,webview控件将显示错误。你只是想把那个错误信息短路吗?可能会有一个非常小的时间窗口,您的检查成功,但当点击被处理时,网站变得不可用

希望这有帮助,
凯文

Kev,谢谢,我会考虑在这里添加我的逻辑。至于原因——我不希望用户看到带有web应用URL的“页面不可用”页面。