Android 往 HTML 中注入JavaScript代码

显示在 WebView 中的一个 HTML 页面需要获取一段从 Android Native 传递过来的数据,比如点击 HTML 中的一个提交按钮后,这个 HTML 需要获取一段json字符串来做校验,该怎么办呢?

呐,这里有一种方式就是往 HTML 中注入一段双方约定好名称的 js 方法块,这样 HTML 在点击提交按钮时就可以先调用这段注入的 js 方法获取到 Android native 段传递的数据。

原理就是:执行 js 的 eval() 方法,往里面塞一个 function 并返回一段数据,js 就能调用这个方法拿到数据了。

如图:

在 Android 中注入:


方法就是:实现onPageFinished()方法,在加载HTML完毕的时候开始注入。

注意:一定要指定 “javascript:” (这里 function 里面的内容可以自由发挥,并不一定遵循本文上写的这种例子)

1
2
3
4
5
6
7
8
9
10
11
String json = "{"access_token":"1","client_id":"2","open_id":"3"}";
mWebView.setWebViewClient(new WebViewClient() {

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if(url.contains("common")){
mWebView.loadUrl("javascript:" + "eval('function getClientInfo(){return " + json + "}')");
}
}
);

这样在 WebView 中前端 HTML 就可以调用 Android Native 传递过来的数据了。

Android JavaScript