Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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
Plugins Cordova.exec函数不';t运行本机函数_Plugins_Cordova_Ibm Mobilefirst - Fatal编程技术网

Plugins Cordova.exec函数不';t运行本机函数

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]

我尝试在IBM worklight中制作一个cordova插件

Javascript:

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;
    }
}