WebView的使用總結

jia635發表於2014-09-08
1)       新增許可權:AndroidManifest.xml中必須使用許可"android.permission.INTERNET",否則會出Web page not available錯誤。
2)       在要Activity中生成一個WebView元件:WebView webView = new WebView(this);或者可以在activity的layout檔案裡新增webview控制元件:
<WebView
android:id="@+id/wv"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/hello"

    />


3)       設定WebView基本資訊:
          如果訪問的頁面中有Javascript,則webview必須設定支援Javascript。
          webview.getSettings().setJavaScriptEnabled(true);  
          觸控焦點起作用
          requestFocus();
          取消滾動條
          this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
 
4)       設定WevView要顯示的網頁:
          網際網路用:webView.loadUrl("http://www.google.com"); 

          本地檔案用:webView.loadUrl("file:///android_asset/XX.html");  本地檔案存放在:assets檔案中


5)       如果希望點選連結由自己處理,而不是新開Android的系統browser中響應該連結。給WebView新增一個事件監聽物件(WebViewClient)並重寫其中的一些方法:

 shouldOverrideUrlLoading:對網頁中超連結按鈕的響應。當按下某個連線時WebViewClient會呼叫這個方法,並傳遞引數:按下的url。比如當webview內嵌網頁的某個數字被點選時,它會自動認為這是一個電話請求,會傳遞url:tel:123,如果你不希望如此可通過重寫shouldOverrideUrlLoading函式解決:

 public boolean shouldOverrideUrlLoading(WebView view,String url){

         if(url.indexOf("tel:")<0){//頁面上有數字會導致連線電話
             view.loadUrl(url);
         }
            return true;           

        }



6)為了讓WebView從apk檔案中載入assets,Android SDK提供了一個schema,字首為"file:///android_asset/"。WebView遇到這樣的schema,就去當前包中的 assets目錄中找內容。如上面的"file:///android_asset/demo.html" 


7)addJavascriptInterface方法中要繫結的Java物件及方法要執行另外的執行緒中,不能執行在構造他的執行緒中,這也是使用 Handler的目的。

8.webview 中使用div層會出現重疊顯現.只能用dom方式操作div的刪除動作.


Webviewjs互動

 wv.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");

private final class DemoJavaScriptInterface

    {
 DemoJavaScriptInterface(){}

     public void clickonAndroid( final String order){
         mHandler.post(newRunnable(){
             @Override
             public void run(){
                       jsonText="{"name":""+order+""}";
                wv.loadUrl("javascript:wave("+jsonText+")");
             }
         });
     }
}


WebView是一個顯示網頁的檢視。它依據於你自己的網頁瀏覽器或者只是顯示在你的Activity中的內容。
它使用了WebKit渲染引擎顯示網頁。它包括一些方法:通過瀏覽記錄向前和向後瀏覽,放大,縮小,進行文字搜尋等等。
實現內建的放大縮小使用 WebSettings.setBuiltInZoomControls(boolean)。



相關文章