Cordova在没有webview的情况下从Java调用JavaScript函数
我们如何从Java调用JavaScript函数。例如,我在www/js/app.js中有sayHello函数。我需要用java编写一个方法,调用这个sayHello并使用cordova返回结果Cordova在没有webview的情况下从Java调用JavaScript函数,javascript,android,cordova,Javascript,Android,Cordova,我们如何从Java调用JavaScript函数。例如,我在www/js/app.js中有sayHello函数。我需要用java编写一个方法,调用这个sayHello并使用cordova返回结果 sayHello: function(name) { return "Hello "+name; } 试试这个 //method to exec javascript private static synchronized void executeJavascript(final String
sayHello: function(name) {
return "Hello "+name;
}
试试这个
//method to exec javascript
private static synchronized void executeJavascript(final String strJS, CordovaWebView myWebView) {
Runnable jsLoader = new Runnable() {
public void run() {
myWebView.loadUrl("javascript:" + strJS);
}
};
try {
Method post = myWebView.getClass().getMethod("post",Runnable.class);
post.invoke(myWebView,jsLoader);
} catch(Exception e) {
((Activity)(myWebView.getContext())).runOnUiThread(jsLoader);
}
}
假设你有课
public class MyCordovaPlugin extends CordovaPlugin
你会有办法的
@Override
public void initialize (CordovaInterface cordova, CordovaWebView webView) {
//and call your method
executeJavascript("sayHello('bear')", webView);
}
我终于找到了
我们需要创建java脚本接口,以便调用java。这是我的完整代码
webView.addJavascriptInterface(mActivity, "callBack");
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("javascript: sayHello('yourName'));
@JavascriptInterface
public void helloResult(String value) {
Log.v("Result",name);
}
还有剧本
sayHello: function(name) {
callBack.helloResult("Hello "+name);
}
您的executeJavascript方法需要2个参数,而您只发送了一个,那么您如何获得webview?编辑了我的答案。你可能想看看如何创建Cordova插件。我知道如何创建Cordova插件,只是想让你知道你的答案是错误的。这一个似乎更好,但我如何接收来自javascript的回调您想要什么是不可能的,您需要webview来执行javascript。不需要显示它,但必须使用它来执行javascript@jcesarmobile-cordova创建了一个网络视图,因此有一个可供使用。问题是如何真正做到这一点。