webview与壳交互的几种方式
1.js调用android中的方法
(1)通过addJavascriptInterface通信
android中webview增加addJavascriptInterface的方法,
webView.addJavascriptInterface(new JavaScriptInterface(),"Demo");
对JavaScriptInterface实现构造函数,增加方法,js可以直接采用命名空间的方式,调用定义的方法。
final class JavaScriptInterface{ JavaScriptInterface(){ } //注意:17+版本,必须申明注解 @JavascriptInterface public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { webView.loadUrl("javascript:wave()"); } }); } }
html中可以直接通过window.Demo.clickOnAndroid调用android中的方法。
(2)通过window.location(url)
url可以做一个接口定义,比如url=open?title=1&name=2&callback
定义一个方法,加参数,回调函数。
android在MyWebViewClient中的shouldOverrideUrlLoading方法会进行拦截。
在此方法中可以对url进行解析,触发相应的接口方法,达到了js调用android方法,对壳做一些交互处理。
=====
分析:
js调用android或者ios中的方法,建议采用window.location的方式,统一定义一套接口,采用相同的url进行解析。这样,在前端js处理时就无需为android、ios各自做判断,定义不同的调用机制,通用性也比较强。
2.android中调用js的方法
webView.loadUrl("javascript:wave()");
html中有个function wave(){}方法,通过该方式可以直接调用wave()。
通过这种模式,js中的方法都是暴露在window最顶级的对象上的。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。