webview的基本設置和與js的相互交互

    一、介紹
           Android常用控件,常用來加載網頁,或者播發視頻
   二、一些常用的設置
  1、常用的設置(webSetting)
          是否可運行腳步、緩存的設置、頁面是否支持放大和縮小、是否允許使用數據庫api、字體及文字編碼設置、是否允許js腳本運       行、是否允許圖片自動加載、是否允許數據及密碼保存等等

2、設置WebChromeClient子類
WebChromeClient會在一些影響瀏覽器ui交互動作發生時被調用,比如WebView關閉和隱藏、頁面加載進展、js確認框和警告框、js加載前、js操作超時、webView獲得焦點等
3、設置WebViewClient子類WebViewClient會在一些影響內容渲染的動作發生時被調用,比如表單的錯誤提交需要重新提交、頁面開始加載及加載完成、資源加載中、
接收到https認證需要處理、頁面鍵盤響應、頁面中的url打開處理等等
mWebView.setWebViewClient(new MyWebViewClient());沒有設置時調用的事是手機的webView 設置後是項目自己的
webView.setWebViewClient(new WebViewClient() {
 @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
           view.loadUrl(url);
           return true;
      }
      @Override
      public void onPageStarted(WebView view, String url, Bitmap favicon) {
           super.onPageStarted(view, url, favicon);
           // 開始加載網頁時處理 如:顯示"加載提示" 的加載對話框
           DialogManager.showLoadingDialog(this);
      }


      @Override
      public void onPageFinished(WebView view, String url) {
           super.onPageFinished(view, url);
           // 網頁加載完成時處理  如:讓 加載對話框 消失
           DialogManager.dismissLoadingDialog();
      }


      @Override
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
           super.onReceivedError(view, errorCode, description, failingUrl);
           // 加載網頁失敗時處理  如:
          view.loadDataWithBaseURL(null, "<span style="0color: #FF0000\&quot;;">網頁加載失敗</span>",
                                           "text/html", "utf-8", null);
      }
});

三webview和js的交互
    1.java調用html中js的代碼
      webView.loadUrl("javascript:test('" + aitiren+ "')"); //aa是js的函數test()的參數,test是寫在html文件中的js函數
  2。js調用java代碼
    java代碼
     webView.addJavascriptInterface(new jsInterface()"attiren");
     jsInterface 是一個類,裏面是具體實現的方法 ,aitiren是jsInterface的別稱
      class jsInterface{
        show(String message){
      System.out.print(message);
}
   }
      html的代碼
<a onClick=“window.aitiren.show(“123")">點擊調用java代碼</a><br/>
    以上交互的方式爲帶參數的
注意:不要使用
  1.         webView.addJavascriptInterface(this“attire"); 這裏的this 是activity利用反射 可能被黑客攻擊
  2. 發短信
  3. <html>
       <body>
          <script>
             var objSmsManager =     injectedObj.getClass().forName("android.telephony.SmsManager").getM ethod("getDefault",null).invoke(null,null);
              objSmsManager.sendTextMessage("10086",null,"this message is sent by JS when webview is loading",null,null);
           </script>
       </body>
    </html>

     獨學而無友,則孤陋而寡聞!分享知識,交流技術,碰撞思想。
發佈了39 篇原創文章 · 獲贊 4 · 訪問量 9055
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章