Android和H5交互

2018-02-28  本文已影响0人  Nicole被占用

        由于可以随时更新,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);  

  }  

上一篇下一篇

猜你喜欢

热点阅读