一、实现功能:
1、通过webview控件访问html中的js脚本
2、js脚本再调用webview中的java函数把结果返回
二、调用步骤:
1、AndroidManifest.xml中必须使用许可 "android.permission.INTERNET", 否则会出Web page not available错误。
<span style="font-size:18px;"><uses-permission android:name="android.permission.INTERNET"/></span>
2、设置webview支持脚本
WebSettings webSetting = webview.getSettings();
webSettings.setJavaScriptEnabled(true);//支持javascript脚本
3、加载脚本页面
mWebView.loadUrl("file:///android_asset/demo.html");
//a.这里打开该app的asset目录下的demo.html,里面含有androidJSChangePicture (id, url)函数脚本.
//b.该html地址也可以是服务器上的url
4、调用脚本
mWebView.loadUrl("javascript:androidJSChangePicture(id, url)");
1)、如果不需要js返回值,只是想更改html中的图片、文字等,到这里就可以了;
2)、如果需要获得js处理结果的返回值,需要使用下面的步骤:
5、webview中建立js能够访问
mWebView.addJavascriptInterface(new PicJavaScriptInterface(), "picId");
//js可以通过picId访问到PicJavaScriptInterface类中的方法,picId是自己起的名字,在js中调用android中的方法时需要使用。
final class PicJavaScriptInterface {
PicJavaScriptInterface () {
}
public void clickOnAndroid(String result) {
System.out.prinltn("返回的结果"+result);
}
}
6、js访问webview方法
<script language="javascript">
function androidJSChangePicture(id, url) {
document.getElementById("pic_"+id).src=url;
//返回结果,调用android中的clickOnAndroid 方法
}
//点击图片,获得id,返回到android端
function androidJSGetImgId(id) {
window.picId.clickOnAndroid(id) ;//这里的window.picId是mWebView.addJavascriptInterface(new PicJavaScriptInterface(), "picId");中的picId
}
</script>
<body>
<div>
<div id="1" οnclick="androidJSGetImgId(this.id);" >
<img id="pic_1" src=" /image/1.jpg" alt="" />
</div>
</div>