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