我已经尝试在shouldOverrideUrlLoading()和该方法之外但在WebViewClient中使用onReceivedError。我甚至在主要的Activity类中尝试过。我对结果不一致感到不满。所以我决定使用测试方法isOnline(),并在调用loadUrl()之前调用它。
public boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getBaseContext()
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo i = cm.getActiveNetworkInfo();
if ((i == null) || (!i.isConnected())) {
Toast toast = Toast.makeText(getBaseContext(),
"Error: No connection to Internet", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP | Gravity.CENTER, 0, 0);
toast.show();
return false;
}
return true;
}
然后,这个onReceivedError在WebViewClient中,但在overloadurlthingy方法之外。这似乎始终防止愚蠢的,傻笑android错误页面。
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
if (view.canGoBack()) {
view.goBack();
}
Toast toast = Toast.makeText(getBaseContext(), description,
Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP | Gravity.CENTER, 0, 0);
toast.show();
}
有些人可能会考虑这种资源沉重。那么,Android Facebook和Google+应用的方式并不重要。而不是Google服务的方式。我坦率地说,不介意使用这些应用程序中的一小部分氧气。叫我一个坏男孩...
我想要做的是让它做错误别的事情, super.onReceivedError(查看使用, errorCode,description,failingUrl); myWebView.LoadUrl(“www.someOtherSite.net”); 但它没有做任何事情,但给我的“未找到”错误页面。 – 2011-02-15 03:49:20