Android中,提供了WebKit引擎用於對網頁瀏覽和操作進行程式設計。GoogleWebKit進行了封裝,提供了豐富的Java介面,其中最重要的便是android.webkit.WebView控制元件。

 

1. WebViewer控制元件

  Android提供了WebView控制元件專門用來瀏覽網頁。其使用方法和其他控制元件一樣,需要在佈局檔案中進行佈局,然後在程式中就可以使用並進行設定了。通過loadUrl方法,可以訪問網頁。程式碼如下:

 
 

  1. wb=(WebView)findViewById(R.id.wb);  
  2. wb.loadUrl(url); 

 

  對於瀏覽器的設定,可以通過WebSettings來設定WebView的一些屬性、狀態等。程式碼如下:

 
 

  1. WebSettings webSettings = mWebView.getSettings();    
  2.         webSettings.setJavaScriptEnabled(true);  
  3.         //設定可以訪問檔案  
  4.         webSettings.setAllowFileAccess(true);  
  5.         //設定支援縮放  
  6.         webSettings.setBuiltInZoomControls(true);  

 

 

2. WebViewClientWebChromClient

  WebViewClientWebChromClientshi 可以看作是輔助WebView管理網頁中各種通知、請求等事件以及JavaScript時間的兩個類。

2.1 WebViewClient

  通過WebViewsetWebViewClient方法指定一個WebViewClient物件。通過覆蓋該類的方法來輔助WebView瀏覽網頁。程式碼如下:

 
 

  1. mWebView.setWebViewClient(new WebViewClient()  
  2.         {     
  3.             public boolean shouldOverrideUrlLoading(WebView view, String url)   
  4.             {     
  5.                 view.loadUrl(url);     
  6.                 return true;     
  7.             }    
  8.             @Override 
  9.             public void onPageFinished(WebView view, String url)   
  10.             {  
  11.                 super.onPageFinished(view, url);  
  12.             }  
  13.             @Override 
  14.             public void onPageStarted(WebView view, String url, Bitmap favicon)   
  15.             {  
  16.                 super.onPageStarted(view, url, favicon);  
  17.             }  
  18.         });  

 

 

2.2 WebChromClient

  對於網頁中使用的JavaScript指令碼語言,就可以使用該類處理Js事件,如對話方塊載入進度等。例如:

 

  1. mWebView.setWebChromeClient(new WebChromeClient(){  
  2.             @Override 
  3.             //處理javascript中的alert  
  4.             public boolean onJsAlert(WebView view, String url, String message,  
  5.                     final JsResult result)   
  6.             {  
  7.                 //構建一個Builder來顯示網頁中的對話方塊  
  8.                 Builder builder = new Builder(Activity01.this);  
  9.                 builder.setTitle("提示對話方塊");  
  10.                 builder.setMessage(message);  
  11.                 builder.setPositiveButton(android.R.string.ok,  
  12.                         new AlertDialog.OnClickListener() {  
  13.                             public void onClick(DialogInterface dialog, int which) {  
  14.                                 //點選確定按鈕之後,繼續執行網頁中的操作  
  15.                                 result.confirm();  
  16.                             }  
  17.                         });  
  18.                 builder.setCancelable(false);  
  19.                 builder.create();  
  20.                 builder.show();  
  21.                 return true;  
  22.             };