天天看點

Android中webview的使用

 webview是android中的浏覽器控件,在一些手機應用中常會用到b/s模式去開發應用,這時webview的強大功能就會顯示出來。

 1、webview的幾點設定

 權限設定:.androidmanifest.xml中必須使用許可"android.permission.internet",否則會出web page not available錯誤

 js開放設定: 如果通路的頁面中有javascript,則webview必須設定支援javascript。webview.getsettings().setjavascriptenabled(true);  否則,頁面的js将不會起作用.

滾動條設定:this.setscrollbarstyle(scrollbars_outside_overlay);

設定緩存模式:setcachemode

2、事件監聽對象(webviewclient) 

事件監聽對象webviewclient中,主要有如下幾個常用方法:

shouldoverrideurlloading:在web頁面裡單擊連結的時候,會自動調用android自帶的浏覽器來打開連結,需要通過該方法在本頁面打開;

@override

    public boolean shouldoverrideurlloading(webview view, string url) {

        view.loadurl(url);

        return true;

    }

onloadresource:加載資源時響應

onpagestart:在加載頁面時響應

onpagefinish:在加載頁面結束時響應

onreceiveerror:在加載出錯時響應

onreceivedhttpauthrequest:

3、傳回處理

如果不做任何處理,浏覽網頁,點選系統“back”鍵,整個browser會調用finish()而結束自身,如果希望浏覽的網 頁回退而不是推出浏覽器,需要在目前activity中處理并消費掉該back事件。

public boolean onkeydown(int keycode, keyevent event) {       

        if ((keycode == keyevent.keycode_back) && mwebview.cangoback()) {       

            mwebview.goback();       

                   return true;       

        }       

        return super.onkeydown(keycode, event);       

    }

4、支援javascripte自定義對象

可以通過addjavascriptinterface()方法,添加js自定義對象,使用web頁面與手機java程式能夠進行通信互動。

5、downloadlistener接口

該接口裡面有一個方法,ondownloadstart()下載下傳偵聽接口,如果客戶代碼實作該接口,則在下載下傳開始、失敗、挂起、完成等情況下,downloadmanagercore對象會調用客戶代碼中實作的downloadlistener方法。

6、幾個注意點

1)為了讓webview從apk檔案中加載assets,android sdk提供了一個schema,字首為"file:///android_asset/"。webview遇到這樣的schema,就去目前包中的 assets目錄中找内容。如上面的"file:///android_asset/demo.html"

2)addjavascriptinterface方法中要綁定的java對象及方法要運作另外的線程中,不能運作在構造他的線程中,這也是使用 handler的目的(今天我是在沒有在handler中處理,是以導緻webviewclient中的onpagestart方法與addjavascriptinterface中的方法起了沖突,二個人的執行順序時常互換,之後改成handlder實作,就解決其中的問題,正确的順序是onpagestart在addjavascriptinterface中的handlder事件處理之前執行)。