最近项目需要用到html+js在安卓端展示,需要和js进行交互,下面是一些自己的心得
mWebView = new WebView(this);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file://mnt/sdcard/test.html");
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
getSpeak();
}
});
}
}, "speak");
setContentView(mWebView);
需要注意的是
本地读取html文件路径以file://开头
speak要与onclick事件中相对应onClick="window.speak.clickOnAndroid()"
mWebView.loadUrl("javascript:ale('"+resultString+"')");
这个是回调html中的js方法
要注意一点的是调用js方法时参数外面要加单引号,否则js里获取不到参数
下面是html部分 很简单
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<script language="javascript">
function ale(str){
input=top.document.getElementsByName("t1");
input[0].value=str;
document.documentElement.style.backgroundColor="#00f";
}
</script>
</head>
<body>
<input type="text" name="t1"/>
<button onClick="window.speak.clickOnAndroid()">语音输入</button>
</body>
</html>