当前位置:   article > 正文

Android 利用WebViewJavascriptBridge 实现js和java的交互(一)_webview jsbrige 能干什么

webview jsbrige 能干什么

      此文出自:http://blog.csdn.net/sk719887916/article/details/47189607,skay

 按Android 开发目前现状来说,开发者大部分时间还是花在UI的屏幕适配上,使用原生控件开发成本已不是那么理想,鉴于很多项目和ios基于一致的ui界面,至使安卓UI开发成本花费更大的代价,因此目前结合Html5和原生控件是解决UI适配的一种很好的选择,处于APP性能也会用java和native层进行结合。不管是哪种结合,其实原理都差不多,只要按照它的协议来,是很容易的,今天我们仅对于Html和Java层结合,学习下WebViewJavascriptBridge。

已经熟悉了jsbridge的朋友直接移步:

《Android基于JsBridge封装的高效带加载进度的WebView》:http://blog.csdn.net/sk719887916/article/details/52402470

 

一 什么是webViewjavascripBridge?

 WebViewJavascriptBridge是移动UIView和Html交互通信的桥梁,用作者的话来说就是实现java(ios为oc)和js的互相调用的桥梁。替代了WebView的自带的JavascriptInterface的接口,使得我们的开发更加灵活和安全。

 

 二 为什么要用webViewjavascripBridge?

     

  对于安卓开发有一段时间的人来说,知道安卓4.4以前谷歌的webview存在安全漏洞,网站可以通过js注入就可以随便拿到客户端的重要信息,甚至轻而易举的调用本地代码进行流氓行为,谷歌后来发现有此漏洞后,增加了防御措施,如果要是js调用本地代码,开发者必须在代码申明JavascriptInterface,

  列如在4.0之前我们要使得webView加载js只需如下代码:

mWebView.addJavascriptInterface(new JsToJava(), "myjsfunction");  

 

     4.4之后调用需要在调用方法加入加入@JavascriptInterface注解,如果代码无此申明,那么也就无法使得js生效,也就是说这样就可以避免恶意网页利用js对安卓客户端的窃取和攻击。

        但是即使这样,我们很多时候需要在js记载本地代码的时候,要做一些判断和限制,或者有可能也会做些过滤和对用户友好提示,因此JavascriptInterface也就无法满足我们的需求了,特此有大头鬼就写出了WebViewJavascriptBridge框架。

    

三 怎么使用webViewjavascripBridge

 

   1 将jsBridge.jar引入到我们的工程

          Eclispe

         

           导入jar包, 或者直接copyjar源码, jar可以到gitHub上下载。

 

        Android Studio: 

             

  1. repositories {
  2. // ...
  3. maven { url "https://jitpack.io" }
  4. }
  5. dependencies {
  6. compile 'com.github.lzyzsd:jsbridge:1.0.4'
  7. }

 

     2 WebView包需使用以上包的webView

 

              Layout中使用第三方webView

       EG:

             

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. <!-- button 演示Java调用web -->
  7. <Button
  8. android:id="@+id/button"
  9. android:layout_width="match_parent"
  10. android:text="@string/button_name"
  11. android:layout_height="48dp"
  12. />
  13. <!-- webview 演示web调用Java -->
  14. <com.github.lzyzsd.jsbridge.BridgeWebView
  15. android:id="@+id/webView"
  16. android:layout_width="match_parent"
  17. android:layout_height="match_parent" >
  18. </com.github.lzyzsd.jsbridge.BridgeWebView>
  19. </LinearLayout>

  3 Java代码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/561945
推荐阅读
相关标签
  

闽ICP备14008679号