我們如何從Java調用JavaScript函數?例如,我有在www/js/app.js中的sayHello函數。我需要用java編寫一個方法來調用這個sayHello並使用cordova返回結果。Cordova通過Java調用JavaScript函數而無需webview
sayHello: function(name) {
return "Hello "+name;
}
我們如何從Java調用JavaScript函數?例如,我有在www/js/app.js中的sayHello函數。我需要用java編寫一個方法來調用這個sayHello並使用cordova返回結果。Cordova通過Java調用JavaScript函數而無需webview
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);
}
你的executeJavascript方法需要2個參數,你只發送一個,那麼你如何獲得webview呢? – jcesarmobile
編輯我的答案。您可能想看看如何創建Cordova插件。 – MegaAppBear
我知道如何創建科爾多瓦插件,只是想讓你知道你的答案是錯誤的。這似乎更好 – jcesarmobile
最後我得到了。
我們需要創建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);
}
你想要的是不可能的,你需要webview來執行javascript。它不是必須的,但你必須用它來執行javascript – jcesarmobile
@jcesarmobile - cordova創建一個webview,所以有一個可以使用。問題是如何真正實現這一目標。 – Jules