我在布局中有一个WebView,它基本上加载了给定的url。一切都很好。 但是,当页面由于某些原因(如果WebView无法访问服务器或网页被删除)不可用时,WebView会显示“网页”不可用。 www.givenurl_something.com上的网页可能会暂时下降"等等 我想在WebView中显示存储在应用程序本身中的默认图像,而不是向用户显示此文本。 我的意思是当一切正常时,网页应该打开。否则,应显示默认图像,任何人都可以帮助我吗? 以下是我的代码。
public class WebviewActivity extends Activity {
// flag for Internet connection status
Boolean isInternetPresent = false;
// Connection detector class
ConnectionDetector cd;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.webview);
cd = new ConnectionDetector(getApplicationContext());
// Create ad request
isInternetPresent = cd.isConnectingToInternet();
if (isInternetPresent) {
WebView w1 = (WebView) findViewById(R.id.webView1);
w1.setWebViewClient(new WebViewClient());
w1.getSettings().setJavaScriptEnabled(true);
w1.getSettings().setBuiltInZoomControls(true);
w1.loadUrl("http://www.google.com");
WebClientClass webViewClient = new WebClientClass();
w1.setWebViewClient(webViewClient);
WebChromeClient webChromeClient = new WebChromeClient();
w1.setWebChromeClient(webChromeClient);
}
else {
showAlertDialog(WebviewActivity.this, "No Internet Connection",
"You don't have internet connection.", false);
}
}
public class WebClientClass extends WebViewClient {
ProgressDialog pd = null;
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
pd = new ProgressDialog(WebviewActivity.this);
pd.setTitle("Please wait");
pd.setMessage("Page is loading..");
pd.show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
pd.dismiss();
}
}
public class WebChromeClass extends WebChromeClient {
}
public void showAlertDialog(Context context, String title, String message,
Boolean status) {
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
// Setting Dialog Title
alertDialog.setTitle(title);
// Setting Dialog Message
alertDialog.setMessage(message);
// Setting alert dialog icon
// alertDialog.setIcon(R.id.action_mode_close_button);
// Setting OK Button
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
// Showing Alert Message
alertDialog.show();
}
答案 0 :(得分:1)
您可以覆盖
onReceivedError(WebView视图,int errorCode,String description,String failingUrl)
WebViewClient类的功能。
当您在加载页面时webview收到任何错误时,您可以显示默认图像。您还可以检查错误代码以针对不同的故障情况加载不同的图像。
有关常量错误代码的详细信息,请参阅Android文档以获取WebViewClient:
http://developer.android.com/reference/android/webkit/WebViewClient.html
答案 1 :(得分:1)
使用此代码覆盖您的错误页面并加载您自己的自定义页面。并将此自定义错误页面(myerrorpage.html)与资产文件夹中的自定义图像保持一致。
mWebView.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
mWebView.loadUrl("file:///android_asset/myerrorpage.html");
}
});