android WebViewClient和WebChromeClient

1、Android之WebViewClient與WebChromeClient的區別

ANDROID應用開發的時候可能會用到WEBVIEW這個組件,使用過程當中可能會接觸到WEBVIEWCLIENT與WEBCHROMECLIENT,那麼這兩個類到底有什麼不一樣呢?
WebViewClient主要幫助WebView處理各類通知、請求事件的,好比:

onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
WebChromeClient主要輔助WebView處理Javascript的對話框、網站圖標、網站title、加載進度等好比

onCloseWindow(關閉WebView)
onCreateWindow()
onJsAlert (WebView上alert無效,須要定製WebChromeClient處理彈出)
onJsPrompt
onJsConfirm
onProgressChanged
onReceivedIcon
onReceivedTitle
看上去他們有不少不一樣,實際使用的話,若是你的WebView只是用來處理一些html的頁面內容,只用WebViewClient就好了,若是須要更豐富的處理效果,好比JS、進度條等,就要用到WebChromeClient。
更多的時候,你能夠這樣


WebView webView;
webView= (WebView) findViewById(R.id.webview);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
這樣你的WebView理論上就能有大部分須要實現的特點了
固然,有些更精彩的內容仍是須要你本身添加的

2、WebViewClient的方法說明

1public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url);
       return true;
  }
   在點擊請求的是連接是纔會調用,重寫此方法返回true代表點擊網頁裏面的連接仍是在當前的webview裏跳轉,不跳到瀏覽器那邊。
2public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error) {
handler.proceed();
}
重寫此方法可讓webview處理https請求。
3public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
            return super.shouldOverrideKeyEvent(view, event);
        }
    }
重寫此方法纔可以處理在瀏覽器中的按鍵事件。
4public void onLoadResource(WebView view, String url) {
            // TODO Auto-generated method stub
            if (DEBUG) {
                Log.d(TAG, " onLoadResource ");
            }
            super.onLoadResource(view, url);
        }
在加載頁面資源時會調用,每個資源(好比圖片)的加載都會調用一次。
5public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            if (DEBUG) {
                Log.d(TAG, " onPageStarted ");
            }
           if (url.endsWith(".apk")) {
                    download(url);//下載處理
             }
            super.onPageStarted(view, url, favicon);
        }
在頁面加載開始時調用。
6public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            if (DEBUG) {
                Log.d(TAG, " onPageFinished ");
            }
            super.onPageFinished(view, url);
        }
在頁面加載結束時調用。
相關文章
相關標籤/搜索