我已經嘗試在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