Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cordova在没有webview的情况下从Java调用JavaScript函数_Javascript_Android_Cordova - Fatal编程技术网

Cordova在没有webview的情况下从Java调用JavaScript函数

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

我们如何从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 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创建了一个网络视图,因此有一个可供使用。问题是如何真正做到这一点。