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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章