背景:AndroidAPI提供WebView组件渲染html。现在HTML5、CSS3、jS相关开发技术,数据交换格式json/XML。Web开发工程师的技能。为了减少对android的过度依赖,通常会在android原生中嵌入一些html。这样就免不了要和js数据进行交互了。我们创建一个只有一个webview控件的简单布局我们找到这个webView并添加本地main.html,其中main.html存放在项目文件的assets根目录下。WebViewwebView=(WebView)findViewById(R.id.webView);webView.addJavascriptInterface(newJSObject(context),"aikaifa");WebSettingswebSettings=webView.getSettings();webSettings.setJavaScriptEnabled(true);//支持jsHandlerhandler=newHandler();handler.postDelayed(newRunnable(){publicvoidrun(){webView.loadUrl("file:///android_asset/main.html");}},500);1.js调用Android方法慎重你要注意上面有一个JSObject类,没错,这个就是打开的入口,前端js可以调用我们Android端写的方法。里面的“爱开法”可以理解为一个标签,可以随意更改。我们看一下JSObject类:publicclassJSObject{privateContextcontext;publicJSObject(Contextcontext){this.context=context;}@JavascriptInterfacepublicvoidgoBack({Activityactivity=(Activity)context;activity.finish();}}这个类定义了goBack方法,注入js可以调用,如果js要调用goBack方法,可以像aikaifa.goBack()这样调用,这样前端就可以很方便的调用我们的Android方法2.Android调用JS方法,因为js可以调用我们的方法,那么我们也调用js的方法,比如我们要调用js中的getName方法,我们可以这样写publicvoidgetTestJS(){Timertimer=newTimer();finalHandlerhandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){case1:webView.loadUrl("javascript:getName()");break;}super.handleMessage(msg);}};timer.schedule(newTimerTask(){publicvoidrun(){Messagemsg=newMessage();msg.what=1;handler.sendMessage(msg);}},500,500);}getName方法是js中的一个方法,我们可以调用getTestJS方法在需要的地方。这样,WebView与js的交互就大致完成了。【本文为专栏作家“洪盛鹏”原创稿件,转载请联系原作者】点此阅读更多该作者好文