由于可以随时更新,H5现在越来越火,webView+H5的开发方式也越来越多,自然就需要android和H5交互.
没有H5配合,自己在本地模拟一下:在src/main/ 新建一个Floder 选择assets,然后新建一个html文件.webView设置参数的时候其余的和一般的加载一样,只不过加上一个设置:
webView.addJavascriptInterface(mContact,"mContact");
webView.loadUrl(url);
注意:----------------------------------------------------------------------------------------------
1.url如果是网络地址那直接写入,如果是本地的那么url为"file:///android_asset/xxx.html" xxx为你的html名
2.mContact是我当前activity的一个内部类Contact的实例,里面有一个getOrderNo方法,Contact类代码如下:
/**
* android contact with js
*/
public final class Contact {
//JavaScript use this method sending data to android
@JavascriptInterface
public void getOrderNo(String response) {
System.out.println("点击了支付");
}
因为方法要被js调用并且传递参数,所以在方法上面加上 @JavascriptInterface,参数这边用String
3.webView.addJavascriptInterface(mContact,"mContact");此目的为了把对象传给js,js直接调用,下面会写出js相关代码
4.如果需要调用js方法并且给js传递参数 在当前activity可以添加
//android use this method sending data to js
public void paymentResult(String result) {
// use js's method 'showInfoFromAndroid(msg)'
webView.loadUrl("javascript:showInfoFromAndroid(result)");
}
------------------------------------------------------------------------------------------------------
下面为js核心代码:
var data="111"
//use android's method
function pay(){
window.mContact.getOrderNo(data);(此处"mContact"就是android里面的实例对象,getOrderNo就是方法名)
}
//android use this method
function showInfoFromAndroid(msg){
alert("msg"+msg);
}