开篇导读
Android提供了WebView控件用来处理Web网页,而在网页中,JavaScript一个很举足轻重的脚本。
本文将介绍如何通过JavaScript代码注入实现获取Html中标签值继而实现Java代码和Javascript代码的相互调用
操作步骤
WebView开启Js调用:
mWebView.getSettings().setJavaScriptEnabled(true);
定义JavaScript调用的交互接口及方法:
public class JavaScriptInterface { @JavascriptInterface public void getTagVal(final String val) { if (!TextUtils.isEmpty(shareUrl)) { Log.e("log tag", "received from js. val = " + val); } } }
WebView设置供JavaScript调用的交互接口。
//后面 “android” 相当于一个标志符 mWebView.addJavascriptInterface(new JavaScriptInterface(), "android");
在WebView加载完毕时注入JavaScript代码
先看网页代码
//这里是Html中我要通过注入取得的标签代码 <meta name="tag" content="恭喜你注入成功,得到了返回值" />
再来实现我们的java代码
mWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); //返回值为true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器 return true; } @Override public void onPageFinished(WebView webView, String url) { //此处windows.android.getTagVal中android是第3步中设置的标记,getTagVal是第2步中的接口中的方法名 //回调的参数中传的就是js代码,自行根据实际html标签脑补或百度 String js = "window.android.getTagVal(document.getElementsByName('tag')[0].content))"; webView.loadUrl("javascript:" + js); } });
OK!完美收官