webview是android中的瀏覽器控件,在一些手機應用中常會用到b/s模式去開發應用,這時webview的強大功能就會顯示出來。
一、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
二、事件監聽對象(WebViewClient)
事件監聽對象WebViewClient中,主要有以下幾個經常使用方法:
shouldOverrideUrlLoading:在web頁面裏單擊連接的時候,會自動調用android自帶的瀏覽器來打開連接,須要經過該方法在本頁面打開;
@Override
public
boolean
shouldOverrideUrlLoading
(
WebView
view
,
String
url
)
{
view
.
loadUrl
(
url
);
return
true
;
}
onLoadResource:加載資源時響應
onPageStart:在加載頁面時響應
onPageFinish:在加載頁面結束時響應
onReceiveError:在加載出錯時響應
onReceivedHttpAuthRequest:
三、返回處理
若是不作任何處理,瀏覽網頁,點擊系統「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);
}
四、支持javascripte自定義對象
能夠經過addJavascriptInterface()方法,添加js自定義對象,使用web頁面與手機java程序可以進行通訊交互。
五、DownloadListener接口
該接口裏面有一個方法,onDownloadStart()下載偵聽接口,若是客戶代碼實現該接口,則在下載開始、失敗、掛起、完成等狀況下,DownloadManagerCore對象會調用客戶代碼中實現的DownloadListener方法。
六、幾個注意點
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事件處理以前執行)。