Cordova PhoneGap Android回调数据

时间:2015-03-16 00:59:26

标签: java javascript cordova phonegap-plugins cordova-plugins

我无法弄清楚如何将数据从JAVA恢复到javascript,这样我就可以在Android上使用Cordova更新UI。这里有两个按钮,因为按下它们会增加位置计数器,我想返回到UI并更新屏幕,但无法弄清楚它是如何返回的。

我以为我可以将switchPos添加到回调中,但似乎无法在javascript中的任何地方添加它,我计划使用“.innerHTML =”语句将值写入UI。

这是插件javascript。

cordova.define(‘myplugin', function (require, exports, module) {
   module.exports = {

    switch1: function (success, failure) {
    cordova.exec(success, failure, “MyPlugin", “switch1”, []);
    },

    switch2: function (success, failure) {
    cordova.exec(success, failure, “MyPlugin", “switch2”, []);
    }


  };
});

以下是调用它们的javascript。

 var myplugin = cordova.require('myplugin');

 var myapp = {

appButton1: function(){
     myplugin.switch1();
},

appButton2: function(){
     myplugin.switch2();
}

};

以下是该插件的JAVA代码。

public class MyPlugin extends CordovaPlugin {

// actions
private static final String SWITCH1 = “switch”1;
private static final String SWITCH2 = “switch”2;

// callbacks
private CallbackContext connectCallback;

// Switch Counters
public static int switchPos1 = 1;
public static int switchPos2 = 1;


@Override
public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException {

    boolean validAction = true;

    if (action.equals(SWITCH1)) {
    Log.d("Valid Action = SWITCH1 Pos: “ + switchPos1);
    switchPos1++;
    callbackContext.success(switchPos1);

} else if (action.equals(SWITCH2)) {
    Log.d("Valid Action = SWITCH2 Pos: “ + switchPos2);
    switchPos2++;
    callbackContext.success(switchPos2);

} else { 
    validAction = false;
}

return validAction;

}

}

2 个答案:

答案 0 :(得分:2)

当你调用插件时,你必须通过成功和失败函数:

var myplugin = cordova.require('myplugin');

 var myapp = {

appButton1: function(){
     myplugin.switch1(function(data){alert(data);},function(error){alert(error);});
},

appButton2: function(){
     myplugin.switch2(function(data){alert(data);},function(error){alert(error);});
}

};

答案 1 :(得分:0)

你可以试试这个

首先,您需要在config.xml中声明自定义插件。你可以在res>中找到这个文件。 xml文件夹。

<feature name="CustomPlugin">
      <param name="android-package" value="com.Phonegap.CustomPlugin" />
</feature>

然后你需要使用Java代码

来实现插件
public class CustomPlugin extends CordovaPlugin {

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
            throws JSONException {

        if (action.equals("sayHello")){
            try {
                String responseText = "Hello world, " + args.getString(0);
                callbackContext.success(responseText);
            } catch (JSONException e){
                callbackContext.error("Failed to parse parameters");
            }
            return true;
        }

        return false;
    }
}

最后我们从javascript调用一个插件

function initial(){
    var name = $("#NameInput").val();
    cordova.exec(sayHelloSuccess, sayHelloFailure, "CustomPlugin", "sayHello", [name]);
}

function sayHelloSuccess(data){
    alert("OK: " + data);
}

function sayHelloFailure(data){
    alert("FAIL: " + data);
}