Plugins Cordova.exec函数不';t运行本机函数
我尝试在IBM worklight中制作一个cordova插件 Javascript:Plugins Cordova.exec函数不';t运行本机函数,plugins,cordova,ibm-mobilefirst,Plugins,Cordova,Ibm Mobilefirst,我尝试在IBM worklight中制作一个cordova插件 Javascript: HelloWorld = { sayHello: function (success, fail, resultType) { Cordova.exec( success, fail, "HelloWorld", "HelloWorld", [resultType]
HelloWorld = {
sayHello: function (success, fail, resultType) {
Cordova.exec(
success,
fail,
"HelloWorld",
"HelloWorld",
[resultType]
);
}
};
function callFunction() {
HelloWorld.sayHello(basarili, basarisiz, "sinan");
}
爪哇:
当我调用callFunction时,我看到fail函数起作用了。此外,我在日志窗口中看不到任何HelloPlugin消息。
我能做什么?有几件事,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
,而不是布尔值。我使用CordovaPlugin
签名尝试了相同的代码,每次都会导致失败。显然,无论WL代码调用的插件是什么,它显然都希望得到不推荐的类的签名。示例中的模块09_3 ApacheCordovaPlugin确实使用了不推荐的插件类而不是CordovaPlugin。我在模块09_3中重写了HelloWorldPlugin类,以消除不推荐使用的Cordova插件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;
}
}
我解决了这个问题。
我使用cordova的2.4版。我不明白为什么它不起作用。当我使用“cordova.exec”时它不工作,但是当我使用PhoneGap.exec时它工作
我也在寻找定义;
在cordova-2.4.0.js的最后一行,它说
var PhoneGap=cordova;
好的,Phonegap已经定义好了,但我不知道为什么cordova不起作用
谢谢您的回答。是的,我在config.xml中添加了一行。我试了你说的第二个,但我又看到了同样的东西。我看了09_3 ApacheCordova插件,我试了这个,现在又试了一次,但项目每次都失败了。你手上有没有一个这样的例子?谢谢。很抱歉,09_3 ApacheCordovaPlugin确实适合我,上面的重写版本扩展了CordovaPlugin,同样适用。它们在模拟器中工作,并直接在设备上工作。你没有试图在浏览器模拟器中运行它,是吗?那是行不通的。
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;
}
}