前段时间开发项目,用到了webview和js的交互,我这边只是实现了APP接受js返回的信息,废话不多说直接上代码。
WebViewwbReportContent = (WebView) findViewById(R.id.wbReportContent);
wbReportContent.setWebViewClient(new WebViewClient() { @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed();//即可忽略SSL证书错误,继续加载页面。这个地方是我没有https的证书,只能选择绕过,如果你用的是http交互的话请注释这行 } }); WebSettings webSettings = wbReportContent.getSettings(); webSettings.setSavePassword(false); webSettings.setSaveFormData(false); webSettings.setJavaScriptEnabled(true); webSettings.setSupportZoom(false); wbReportContent.getSettings().setDefaultTextEncodingName("UTF-8"); wbReportContent.setWebChromeClient(new WebChromeClient()); wbReportContent.addJavascriptInterface(new DemoJavaScriptInterface(UniversalHtmlActivity.this, null), "mobile")//重点在这里:在DemoJavaScriptInterface中写你和js订好的接口/** * 接收js返回的信息 */ public class DemoJavaScriptInterface { private Context context; private Handler handler; public DemoJavaScriptInterface(Context context, Handler handler) { this.context=context; this.handler=handler; } /** * This is not called on the UI thread. Post a runnable to invoke * loadUrl on the UI thread. */ @JavascriptInterface public void timeOut() {//timeOut是你和js定好的方法,必须是定好的,不然接收不到 //你要干的事情 };其实这个网上已经有很多这个例子了,我只是简单易懂的在说一下!