Demo 地址:码云java
1、Android API提供的官方交互方式android
1.webView.getSettings().setJavaScriptEnabled(true);设置webview运行执行js代码。git
2.在提供给H5使用的方法上添加注解@JavascriptInterface,只有存在此注解的方法才能够被github
H5使用(谷歌面对webview已知漏洞在API 4.4之后增长的防护措施)。web
3.webView.addJavascriptInterface(Object,name);向H5中注入java对象,H5经过name调用java方法。面试
如:浏览器
Android:cookie
webview.addJavascriptInterface(new NativeMethodList(),"nativeMethod");
class NativeMethodList{
@JavascriptInterface
public void show(){
TalkApp.talk(“调用了native无参方法");
}
}
H5:app
document.getElementById("btn0").onclick = function({
nativeMethod.show();
};
2、加载解析url的交互方式
1.webView.setWebViewClient(WebViewClient);
2.重写WebViewClient中shouldOverrideUrlLoading方法,这个方法回调有两个参数,WebView对象和WebResourceRequest对象。
3.解析WebResourceRequest对象,拿到储存在url中的参数,根据必定规则调用不一样的java方法。
常见用法:打开某个应用界面:
在某一个Activity中设置intent-filter标签能够监听url,以下:
android:host="app"
android:path="/main"/>
在打开的Activity中经过getIntent().getData()能够拿到打开它的url,解析其能够获取到url中的各类参数。
注:现市场上大部分浏览器能够经过scheme打开应用,须要在步骤2中添加跳转Activity的方法,不然应用内部的webview没法跳转应用界面。
3、Cookie 使用
1.
webViewCookieManager instance = CookieManager.getInstance();
instance.getCookie(url);
能够获取到url对应的cookie,也就是说H5与Android能够同时操做cookie
4、JsBridge : 5K star的开源库
这个库解决了H5 和 Android之间的方法调用,经过加载解析url的方式,并向H5中注入script对象,同时维护Android 和 H5的消息队列,已达到调用方法,返回值得功能。