android webview 自定義404錯誤頁面!
自定義404頁面。android的webview 控件可以加載網頁,webview有兩個方法:webView.setWebChromeClient和webView.setWebViewClient。
WebChromeClient主要處理解析,渲染網頁等瀏覽器做的事情,輔助WebView處理Javascript的對話框,網站圖標,網站title,加載進度:
onCloseWindow(關閉WebView)
onCreateWindow()
onJsAlert (WebView上alert是彈不出來東西的,需要定制你的WebChromeClient處理彈出)
onJsPrompt
onJsConfirm
onProgressChanged
onReceivedIcon
onReceivedTitle
比如可以添加進度條,使得界面更友好。
WebViewClient是幫助WebView處理各種通知、請求事件的,具體來說包括:
onLoadResource
onPageStart
onPageFinish
onReceiveError //這個就是我們想要的方法
onReceivedHttpAuthRequest
那么我們要加載自定義的404界面就要兩個并用了。
代碼如下:
1 webView = (WebView) findViewById(R.id.webv);//獲取控件
2 webView.getSettings().setJavaScriptEnabled(true); //設置js權限,比如js彈出窗,你懂得
3 webView.getSettings().setSupportMultipleWindows(true);
4
5 webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
6
7 webView.setWebChromeClient(new MyWebChromeClient()
8 {
9 public void onProgressChanged(WebView view, int progress)//設置 加載進程
10 {
11 activity.setTitle("正在加載...Loading...");
12 activity.setProgress(progress * 100);
13 if(progress >= 100){
14 new Thread(new Runnable() {
15 @Override
16 public void run() {
17 Message msg=handler.obtainMessage();//發送通知,加入線程
18 msg.what=2;//加載完成
19 handler.sendMessage(msg);//通知發送!
20 }
21 }).start();
22 activity.setTitle(R.string.app_name);
23 }
24 }
25 }
26 );
27
28 webView.setWebViewClient(new WebViewClient() {
29 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
30 {
31 view.stopLoading();
32 view.clearView();
33 Message msg=handler.obtainMessage();//發送通知,加入線程
34 msg.what=1;//通知加載自定義404頁面
35 handler.sendMessage(msg);//通知發送!
36 }
37 public boolean shouldOverrideUrlLoading(WebView view, String url)
38 {
39 view.loadUrl(url);
40 return true;
41 }
42 });
43 webView.addJavascriptInterface(this, "javatojs");//將本activity綁定到java_js這個js當中去
44 webView.loadUrl(URL);
45 checkUPPay();//檢測銀聯支付控件是否已添加
46 }
47 /**
48 * handler處理消息機制
49 */
50 protected Handler handler = new Handler(){
51 public void handleMessage(Message message){
52 switch (message.what) {
53 case 0:
54 myDialog.show();
55 break;
56 case 1:
57 webView.loadUrl(URL404);
58 break;
59 case 2:
60 myDialog.dismiss();
61 break;
62 }
63 }
64 };
來自:http://www.cnblogs.com/winxiang/archive/2012/10/25/2738320.html
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!