webview中调用js
webView.getSettings().setJavaScriptEnabled(true);//设置js脚本可用
webView.loadUrl("url");//加载页面
webView.loadUrl("javascript:test(a,b,c)");//调用js方法
html中调用java
android中配置
webView.addJavascriptInterface(new MyJSInterface(),"app");//添加js脚本接口
class MyJSInterface
{
@JavascriptInterface
public void androidMethod() //提供给js调用的方法
{
//todo
}
}
html中使用
<div id='b'>
<a onclick="window.app.androidMethod()">b.c</a>
</div>
总结
webview与js的交互的基本使用方法如上,补充几点:
在这篇博客中抄出这段话
Android Webview有两个非常知名的漏洞:
1、最近爆出来的UXSS漏洞,可以越过同源策略,获得任意网页的Cookie等信息,Android 4.4以下都有此问题,基本无解,只能重新编译浏览器内核解决,详情可以参考最近移动安全三两事,感兴趣的可以去看一下@RAyH4c劫持微博、QQ空间的视频。
2、成名已久的任意命令执行漏洞,通过addJavascriptInterface方法,Js可以调用Java对象方法,通过反射机制,Js可以直接获取Runtime,从而执行任意命令。Android 4.2以上,可以通过声明**@JavascriptInterface**保证安全性,4.2以下不能再调用addJavascriptInterface,需要另谋他法。在实际的混合应用开发中需要对js交互做一些封装设计以便于后期的维护扩展,我会在Android中webview与js的交互(二)中分享一下我的经验