作者:清晨竹林9_877 | 来源:互联网 | 2023-08-18 14:53
前段时间开发项目,用到了webview和js的交互,我这边只是实现了APP接受js返回的信息,废话不多说直接上代码。WebViewwbReportContent(WebView)findVi
前段时间开发项目,用到了webview和js的交互,我这边只是实现了APP接受js返回的信息,废话不多说直接上代码。
WebView
wbReportCOntent= (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定好的方法,必须是定好的,不然接收不到 //你要干的事情 };
其实这个网上已经有很多这个例子了,我只是简单易懂的在说一下!