Webview检查整个会话的连接

时间:2011-01-14 22:41:10

标签: java android webview

我有一个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;
    } 

}

这可能吗?

1 个答案:

答案 0 :(得分:0)

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

private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

我学会了覆盖该功能,以便单击webview中的链接不会打开新活动。每次用户点击URL时都会调用该函数。我想你可以在那里挂钩你的连接检查逻辑。

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

希望这有帮助, 凯文