webview中調(diào)用js
webView.getSettings().setJavaScriptEnabled(true);//設(shè)置js腳本可用
webView.loadUrl("url");//加載頁(yè)面
webView.loadUrl("javascript:test(a,b,c)");//調(diào)用js方法
html中調(diào)用java
android中配置
webView.addJavascriptInterface(new MyJSInterface(),"app");//添加js腳本接口
class MyJSInterface
{
@JavascriptInterface
public void androidMethod() //提供給js調(diào)用的方法
{
//todo
}
}
html中使用
<div id='b'>
<a onclick="window.app.androidMethod()">b.c</a>
</div>
總結(jié)
webview與js的交互的基本使用方法如上,補(bǔ)充幾點(diǎn):
在這篇博客中抄出這段話
Android Webview有兩個(gè)非常知名的漏洞:
1、最近爆出來(lái)的UXSS漏洞,可以越過同源策略,獲得任意網(wǎng)頁(yè)的Cookie等信息,Android 4.4以下都有此問題,基本無(wú)解,只能重新編譯瀏覽器內(nèi)核解決,詳情可以參考最近移動(dòng)安全三兩事,感興趣的可以去看一下@RAyH4c劫持微博、QQ空間的視頻。
2、成名已久的任意命令執(zhí)行漏洞,通過addJavascriptInterface方法,Js可以調(diào)用Java對(duì)象方法,通過反射機(jī)制,Js可以直接獲取Runtime,從而執(zhí)行任意命令。Android 4.2以上,可以通過聲明@JavascriptInterface保證安全性,4.2以下不能再調(diào)用addJavascriptInterface,需要另謀他法。在實(shí)際的混合應(yīng)用開發(fā)中需要對(duì)js交互做一些封裝設(shè)計(jì)以便于后期的維護(hù)擴(kuò)展,我會(huì)在Android中webview與js的交互(二)中分享一下我的經(jīng)驗(yàn)