Android WebView使用的技巧與一些坑_Android

來源:互聯網
上載者:User

隨著手機效能的提高,以及iOS和Android兩個平台的普及,更多的App都會選擇兩個平台的App都進行開發,在有些時候,為了更加快速的開發,我們會採用hybird方式開發,這個時候我們需要使用webview並且自己進行一些配置。Android的webview在低版本和高版本採用了不同的webkit版本核心,4.4後直接使用了chrome,因此問題很多,這裡分享一些我使用過程的一些技巧和遇到的坑。
###webview配置###

mWebview.getSettings().setJavaScriptEnabled(true); //設定允許運行javascript// HTML5 API flagsmWebview.getSettings().setAppCacheEnabled(true); //設定允許緩衝mWebview.getSettings().setDatabaseEnabled(true); //設定允許使用localstore

上面webview.getSettings()會獲得WebSettings對象,在這個對象中會儲存Webview的一些設定,比如上面所設定的這些,更多的設定請查看WebSettings的api文檔。
通常我們還會使用WebViewClient和WebChromeClient這兩個組件來輔助WebView。WebViewClient主要協助處理各種通知請求事件等,比如頁面開始載入,載入完成等。WebChromeClient主要輔助WebView處理javascript對話方塊,網站表徵圖,網站標題,載入進度等等。
實際應該根據實際情況使用這兩個組件,重寫響應的方法,在其中執行自己的一些操作。
###Javascript的使用###
開啟javascript的方法上面已經提到了。
用戶端調用網頁中的js代碼,或者執行相應的代碼。

private void evaluateJavascript(String js) {  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {  mWebview.evaluateJavascript(js, null); } else {  mWebview.loadUrl(js); }}

在android4.4開始系統提供了evaluateJavascript方法來執行js方法,並且可以進行回調。但是在低於4.4的版本並沒有這個方法,我們需要只要直接通過loadUrl的方式來執行js,此時需要在js代碼前加”javascript:”。
另外可以在用戶端定義一些javascript給網頁中調用。
比如這樣:
首先定義一個給js執行的類:

public class WebAppInterface { Context mContext; /** Instantiate the interface and set the context */ WebAppInterface(Context c) {  mContext = c; } /** Show a toast from the web page */ @JavascriptInterface public void showToast(String toast) {  Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); }}webView.addJavascriptInterface(new WebAppInterface(this), "Android");

之後用*addJavascriptInterface&設定到webview上,在js中就可以用Android.showToast(“fdf")調用了。
需要注意的是,在我們給js的介面方法需要是public的,使用到了JavascriptInterface的註解,這個註解在Android4.2的時候添加,更新的android如果不加這個註解是不可以使用的。
###硬體加速###
硬體加速是個大坑,請勿開啟。
在android4.4後使用的chrome,系統會自行開啟。
###其他###
以及使用WebView,給忘了給應用申請網路訪問的許可權。
還有一些知識點沒整理到,請參考webview的文檔,更多的坑以後踩到再更新。
另外JeremyHe總結的知識也不錯,可以參考:http://www.jb51.net/article/86956.htm

原文地址:http://blog.isming.me/2015/10/18/webview-use/

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.