Javascript Android webview活动,如何获取js返回值?
js代码如下: 函数a(){返回“hello”;} 在android webview活动中,如何调用js函数a()获取返回值“hello” webview.addJavaInterface?webview.loadUrl()?我搞不懂 请告诉我如何解决这个问题。我的建议是: 1-定义Javascript接口 一个带有一些方法和属性的普通Java类,使用注释将所需的方法公开给webview JS范围Javascript Android webview活动,如何获取js返回值?,javascript,android,Javascript,Android,js代码如下: 函数a(){返回“hello”;} 在android webview活动中,如何调用js函数a()获取返回值“hello” webview.addJavaInterface?webview.loadUrl()?我搞不懂 请告诉我如何解决这个问题。我的建议是: 1-定义Javascript接口 一个带有一些方法和属性的普通Java类,使用注释将所需的方法公开给webview JS范围 public class MyInterface { private WebView webVi
public class MyInterface {
private WebView webView;
//pass the reference to the webview in your constructor
public JavascriptCallback(WebView webView) {
this.webView = webView;
}
//expose this method to the JS scope using annotation
@JavascriptInterface
void sumNumbers(final String num1, final String num2, final String JScallbackFn) {
this.javascriptCallback(JScallbackFn, num1 + num2);
}
//run the callback into the JS scope
void javascriptCallback(final String callback, final String result) {
webView.post(new Runnable() {
@Override
public void run() { webView.load("javascript:"+callback+"("+result+")", null);
}
});
}
2-在webview中插入JavaScript接口
webview.addJavascriptInterface(new MyInterface(this.getActivity(), webview), "MyInterface");
3-调用JS方法(从webview中)
有关webview如何在Android上工作的更多详细说明,请查看官方文档我认为调用js方法获取返回值有点复杂,在ios中,webview支持调用js方法直接获取返回值,非常感谢!
MyInterface.sumNumbers(12, 34, showResult);
function showResult(res) {
document.getElementById('myDiv').innerHTML(res);
}