赞
踩
此文出自: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
WebViewJavascriptBridge是移动UIView和Html交互通信的桥梁,用作者的话来说就是实现java(ios为oc)和js的互相调用的桥梁。替代了WebView的自带的JavascriptInterface的接口,使得我们的开发更加灵活和安全。
对于安卓开发有一段时间的人来说,知道安卓4.4以前谷歌的webview存在安全漏洞,网站可以通过js注入就可以随便拿到客户端的重要信息,甚至轻而易举的调用本地代码进行流氓行为,谷歌后来发现有此漏洞后,增加了防御措施,如果要是js调用本地代码,开发者必须在代码申明JavascriptInterface,
列如在4.0之前我们要使得webView加载js只需如下代码:
mWebView.addJavascriptInterface(new JsToJava(), "myjsfunction");
4.4之后调用需要在调用方法加入加入@JavascriptInterface注解,如果代码无此申明,那么也就无法使得js生效,也就是说这样就可以避免恶意网页利用js对安卓客户端的窃取和攻击。
但是即使这样,我们很多时候需要在js记载本地代码的时候,要做一些判断和限制,或者有可能也会做些过滤和对用户友好提示,因此JavascriptInterface也就无法满足我们的需求了,特此有大头鬼就写出了WebViewJavascriptBridge框架。
Eclispe:
导入jar包, 或者直接copyjar源码, jar可以到gitHub上下载。
Android Studio:
- repositories {
- // ...
- maven { url "https://jitpack.io" }
- }
-
- dependencies {
- compile 'com.github.lzyzsd:jsbridge:1.0.4'
- }
Layout中使用第三方webView
EG:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
-
- <!-- button 演示Java调用web -->
- <Button
- android:id="@+id/button"
- android:layout_width="match_parent"
- android:text="@string/button_name"
- android:layout_height="48dp"
- />
-
- <!-- webview 演示web调用Java -->
- <com.github.lzyzsd.jsbridge.BridgeWebView
- android:id="@+id/webView"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- </com.github.lzyzsd.jsbridge.BridgeWebView>
-
- </LinearLayout>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。