Android使用webview時出現404如何替換掉原來的錯誤頁面

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;

public class MainActivity extends Activity {

   
    private WebView webView;
    private ImageView img;
    String url = "http://sttuolian.wicp.net:8086";
    private Dialog myDialog;
   
   

   

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
        setContentView(R.layout.activitymain);

        webView = (WebView) findViewById(R.id.eshetong_wv);
        img = (ImageView) findViewById(R.id.wordpress_logo);

        WebSettings webSettings = webView.getSettings();
        // 支持JS
        webSettings.setJavaScriptEnabled(true);
        // 將圖片調整到適合webView的大小
        webSettings.setUseWideViewPort(false);
        // webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
        // 支持縮放
        webSettings.setSupportZoom(true);
        webSettings.setBuiltInZoomControls(true);
        // 可以訪問文件
        webSettings.setAllowFileAccess(true);
        // 支持通過JS打開新窗口
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        // 支持自動加載圖片
        webSettings.setLoadsImagesAutomatically(true);
        // 使滾動條不佔位
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

        webView.setWebViewClient(new WebViewClient() {
           
            @Override
            public void onReceivedError(WebView view, int errorCode,
                    String description, String failingUrl) {
                
                view.stopLoading();
                view.clearView();
                Message msg = handler.obtainMessage();// 發送通知,加入線程
                msg.what = 1;// 通知加載自定義404頁面
                handler.sendMessage(msg);// 通知發送!
            }
           
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
                // return super.shouldOverrideUrlLoading(view, url);
            }
           
              @Override
              public void onPageFinished(WebView view, String url)
              {              
                      super.onPageFinished(view, url);
              }
        });
       
        webView.loadUrl(url);
       
         
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        // TODO Auto-generated method stub
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            webView.goBack(); // goBack()表示返回WebView的上一頁面
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    protected Handler handler = new Handler() {
        public void handleMessage(Message message) {
            if(message.what==1){          
                webView.stopLoading(); 
                //載入本地assets文件夾下面的錯誤提示頁面404.html 
                webView.loadUrl("file:///android_asset/404.html");
            }else{                       
                myDialog.show();
            }
        }
    };
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章