I have a cordova plugin(a message broker- mqtt) in java. From the html, I call this plugin via a javascript interface as follows:
function heartbeat() {
MqttPlugin.heartbeat({topic: "$EDC/tum/B8:27:EB:A6:A9:8A/HEARTBEAT-V1/mqtt/heartbeat"});
}
The following is the part inside my javascript interface:
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]);
};
The following is my java file:
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;
}
So basically, the java function subscribe keeps getting some messages in a fix interval. I want to send this message to my html. I went through the cordova android documentation, but that didn't help.
Change
MqttPlugin.heartbeat({topic: "$EDC/tum/B8:27:EB:A6:A9:8A/HEARTBEAT-V1/mqtt/heartbeat"});
to
MqttPlugin.heartbeat({topic: "$EDC/tum/B8:27:EB:A6:A9:8A/HEARTBEAT-V1/mqtt/heartbeat"},successCallback,errorCallback);
You can choose the order of the params if you want
Then change
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]);
};
to
MqttPlugin.prototype.heartbeat = function(aString,success,error){
console.log("MqttPlugin.js: subscribe");
exec(
success,
error,
"MqttPlugin",
"heartbeat",
[aString.topic]);
};
Finally, create a successCallback
function
function successCallback(result){
alert("Mqtt Subscribe got the value" + result);
}