Cordova插件返回值

时间:2015-06-17 16:40:42

标签: cordova cordova-plugins

我在java中有一个cordova插件(消息broker-mqtt)。从html中,我通过javascript界面​​调用此插件,如下所示:

function heartbeat() {

             MqttPlugin.heartbeat({topic: "$EDC/tum/B8:27:EB:A6:A9:8A/HEARTBEAT-V1/mqtt/heartbeat"});
        }

以下是我的javascript界面​​中的部分:

MqttPlugin.prototype.heartbeat = function(aString){
console.log("MqttPlugin.js: subscribe");
exec(
function(result){ /*alert("Mqtt Subscribe got the value" + result)*/ },
function(result){ /*alert("Error" + reply);*/ },
"MqttPlugin",
"heartbeat",
[aString.topic]);
};

以下是我的java文件:

public boolean execute(String action,  JSONArray args,
                       CallbackContext callbackContext) throws JSONException {
    Log.d("Kura-MQTT", String.valueOf(status));
    if (android.os.Build.VERSION.SDK_INT >= 11) {
        final StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

    if (action.equals("subscribe")) {
        this.setOpts(args);
        Log.d("Topic in subscribe", args.get(0).toString());

        //subscribe();

        this.cordova.getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                subscribe();
            }
        });
        this.pluginCallbackContext = callbackContext;

        Log.d("callbackcontext", pluginCallbackContext.toString());

        return true;

    }

基本上,java函数subscribe在修复间隔中不断获取一些消息。我想将此消息发送到我的HTML。我浏览了cordova android文档,但这没有帮助。

1 个答案:

答案 0 :(得分:0)

更改

 MqttPlugin.heartbeat({topic: "$EDC/tum/B8:27:EB:A6:A9:8A/HEARTBEAT-V1/mqtt/heartbeat"});

MqttPlugin.heartbeat({topic: "$EDC/tum/B8:27:EB:A6:A9:8A/HEARTBEAT-V1/mqtt/heartbeat"},successCallback,errorCallback);

如果需要,您可以选择参数的顺序

然后改变

MqttPlugin.prototype.heartbeat = function(aString){
console.log("MqttPlugin.js: subscribe");
exec(
function(result){ /*alert("Mqtt Subscribe got the value" + result)*/ },
function(result){ /*alert("Error" + reply);*/ },
"MqttPlugin",
"heartbeat",
[aString.topic]);
};

MqttPlugin.prototype.heartbeat = function(aString,success,error){
console.log("MqttPlugin.js: subscribe");
exec(
success,
error,
"MqttPlugin",
"heartbeat",
[aString.topic]);
};

最后,创建一个successCallback函数

function successCallback(result){
    alert("Mqtt Subscribe got the value" + result);
}