閱讀113 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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事件處理之前執行)。

最後更新:2017-04-02 06:51:45

  上一篇:go Android進階:實現多線程下載文件
  下一篇:go 使用PreferenceActivity時,如何獲取ListPreference中選中的值