Cordova.exec函数不运行本地函数
我尝试在IBM worklight中创建一个cordova插件。Cordova.exec函数不运行本地函数
的Javascript:
HelloWorld = {
sayHello: function (success, fail, resultType) {
Cordova.exec(
success,
fail,
"HelloWorld",
"HelloWorld",
[resultType]
);
}
};
function callFunction() {
HelloWorld.sayHello(basarili, basarisiz, "sinan");
}
的Java:
package com.Cordova1;
import org.apache.cordova.api.CordovaPlugin;
import org.json.JSONArray;
import android.util.Log;
public class HelloWorld extends CordovaPlugin {
public boolean execute(String arg0, JSONArray arg1, String arg2) {
Log.d("HelloPlugin", "Hello, this is a native function called from PhoneGap/Cordova!");
return true;
}
}
当我打电话callFunction我看到失败的功能工作。另外,我在日志窗口中看不到任何HelloPlugin消息。 我能做什么?
模块09_3样本中的ApacheCordovaPlugin确实使用了弃用的Plugin类而不是CordovaPlugin。我已经重写了模块09_3中的HelloWorldPlugin类,以消除已弃用的Cordova Plugin API使用情况。该示例工作正常。
package com.AndroidApacheCordovaPlugin;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
public class HelloWorldPlugin extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray arguments,
CallbackContext callbackContext) throws JSONException {
if (action.equals("sayHello")) {
String responseText = "Hello world";
try {
responseText += ", " + arguments.getString(0);
callbackContext.success(responseText);
return true;
} catch (JSONException e) {
callbackContext.error(e.getMessage());
}
} else {
callbackContext.error("Invalid action: " + action);
return false;
}
return false;
}
}
有几件事情,1)你有没有为你的插件添加一行到config.xml文件? 2)你似乎在重写CordovaPlugin中的错误方法。它应该是:
public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
我遇到了同样的问题。看看示例中的模块09_3 ApacheCordovaPlugin
。这个例子确实对我有效,但他们正在使用已弃用的Plugin
类而不是CordovaPlugin
。
import org.apache.cordova.api.Plugin;
import org.apache.cordova.api.PluginResult;
...
public class HelloWorldPlugin extends Plugin {
public PluginResult execute(String action, JSONArray arguments, String callbackId) {
弃用的类返回PluginResult
,不是boolean
。我已经尝试使用CordovaPlugin
签名的相同代码,并且每次都会导致失败。显然,无论WL代码调用的插件显然期望不赞成类的签名。
我看了09_3 ApacheCordovaPlugin,我尝试了这个,现在我又试了一次,但是这个项目每次都会导致失败。 你有没有一个适合你的例子? 谢谢。 – gumust 2013-03-10 18:32:42
对不起,但09_3 ApacheCordovaPlugin对我来说并不起作用,并且覆盖CordovaPlugin的上述重写版本也可以使用。他们在模拟器中直接在设备上工作。你不是试图在浏览器模拟器中运行它吗?这是行不通的。 – 2013-03-12 19:30:34
我解决了这个问题。 我使用2.4版本的cordova。我不明白为什么它不起作用。当我使用“cordova.exec”它不起作用,但是当我使用PhoneGap.exec时,它可以工作。
另外我找了定义; 在cordova-2.4.0.js的最后一行中,它表示 var PhoneGap = cordova; 好的,Phonegap被定义,但我不知道为什么科尔多瓦不工作。
谢谢你的回答。
是的,我在config.xml中添加了一行。 我试过了你说的第二个,但我又看到了同样的东西。 –
gumust
2013-03-10 07:09:02