我有一个在Java中实现的javascript接口,由我的JavaScript代码调用,它被加载到Webview中。
JS Inside webview:
Android.myFunction(function(data){
console.log(data);
});
Java的:
public class JavaScriptInterface {
Context context;
WebView webView;
JavaScriptInterface(Context c, WebView w) {
context = c;
webView = w;
}
public void myFunction(String callback) {
//when I log callback, it is "undefined"
String someData = "Yay for data";
String js =
"javascript:(function() { "
+ "var callback = " + callback + ";"
+ "callback('" + someData + "');"
+ "})()";
webView.loadUrl(js);
}
}
由webview加载的字符串最终是:
javascript:(function() {var callback = undefined; undefined();})()
我有几个想法:
一个。在JS中以String形式建立回调。
湾在将它传递给Android.myFunction()之前调用回调toString();
我的问题是,最好的方法是什么?我很想能够将对象传递给Android,它的神奇作品。显然,情况并非如此。 ;)下一个最好的方法是什么?