Android WebView 与 原生的交互

前段时间,才接触这个。看了 很多博客,但是,就是搞不出来。跟别人写的基本一样。哎。愚笨了。谢谢群里帮助我的 大神们,来说说其中的细节吧。

调用前的准备:

//**细节①**
webView.addJavascriptInterface(this,"app");
<!--webView 相关属性设置-->
...

第一种:Java(原生) 调用 Js。

webView.postDelayed(new Runnable() {
    @Override
    public void run() {
    //**细节②** javascript+goods_lists()方法名字。
   //如果带有参数"javascript:goods_lists('"+id+"','"+name+"')"多个参数请用逗号隔开。
        mStyleWv.loadUrl("javascript:goods_lists()");
        //LoadDialog.dismiss(getContext());

    }
}, 1000);//**细节③**就是这里,坑了我不止一天时间。 这里采用的一个线程,主要是避免HTML页面 还没加载完毕就调用了JS 方法。 这里设置1S后执行。
//在XML中引入写js方法的文件。

第二种:Js调用Java。

//**细节①**,这个注解一定要加。
@JavascriptInterface//简单点,点击JS中的按钮,跳转到原生页面,我这里有参数,可以不写。
public void SkipParisonof(String id,String img,String name,String num,String price) {
    Intent intent=new Intent(getContext(), ComParisonofIndentActivity.class);
    intent.putExtra("scomm_id",id);
    intent.putExtra("scomm_img",img);
    intent.putExtra("scomm_name",name);
    intent.putExtra("scomm_price",price);
    intent.putExtra("scomm_num",num);
    startActivity(intent);
}

//XML那边的,调用方法,没有参数的话,window.app.SkipParisonof()"

<li class="active"><a onclick="window.app.SkipParisonof('0')">全部</a></li>

第三种:就是,js调用java 之后,Java 再调用一下Js方法。
应用场景:比如,原生这边没有参数,但是也不想从新写个接口。这个时候,XML那边调用原生的方法,传个参数过来。原生的再利用这个参数,进行方法的调用。

    //js调用java.
    @JavascriptInterface//
    public void getLogisticsType(final String status){
        //java 调用js ,
        mLogisticsWv.postDelayed(new Runnable() {
            @Override
            public void run() {
//                mLogisticsWv.loadUrl("javascript:ajax_order_goods('"+id+"','"+status+"')");
//                LoadDialog.dismiss(MyShopOrderActivity.this);
            }
        },0);
    }

总之一句,根据需求,各种变换就是了。有什么错误的地方,多多指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值