我有一个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;
}
}
这可能吗?
答案 0 :(得分:0)
我认为您可以通过这种方式检测新的URL加载请求:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
我学会了覆盖该功能,以便单击webview中的链接不会打开新活动。每次用户点击URL时都会调用该函数。我想你可以在那里挂钩你的连接检查逻辑。
我很好奇为什么你需要检查这个。如果没有连接,webview控件将显示错误。您是否只是试图将该错误消息短路?可能会有一个非常小的时间窗口,您的检查成功,但是当处理点击时网站将变得不可用。
希望这有帮助, 凯文