Android(安卓)WebView 与 原生的交互
16lz
2021-01-26
前段时间,才接触这个。看了 很多博客,但是,就是搞不出来。跟别人写的基本一样。哎。愚笨了。谢谢群里帮助我的 大神们,来说说其中的细节吧。
调用前的准备:
//**细节①**webView.addJavascriptInterface(this,"app");...
第一种: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); }
总之一句,根据需求,各种变换就是了。有什么错误的地方,多多指出。
更多相关文章
- Android(安卓)四种异步操作UI界面的方法
- Android(安卓)Root方法原理解析及Hook(四) GingerBreak
- Android(安卓)调用Android功能实现虚拟打电话程序
- Android在非UI线程中更新UI的方法
- Android中从网络获取数据的方法
- Android(安卓)Cocos2d-x游戏集成友盟社会化组件分享功能
- android 日记log保存到本地简单方法
- Android之通过ContentProvider实现两个app(进程间)间通信以及函
- Android后台任务(HandlerThread、AsyncTask、IntentService)