IBM Worklight插件连接没有发生

时间:2014-03-19 05:04:15

标签: android cordova ibm-mobilefirst phonegap-plugins

我已经创建了cordova-plugin来在Android中进行本机调用。在cordova插件的exec函数中,我有callbackContext,通过它我可以从cordova-plugin调用javascript函数。问题是我无法在一段时间后通过callbackContext调用javascript函数。

public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
throws JSONException {
    if (NFC_INIT_ACTION.equals(action)) {
        context = this.cordova.getActivity().getApplicationContext();
        WalletRuntimeStore.setContext(context);
        nfc = NFCService.getInstance();
        HelloWorldPlugin(data, callbackContext);
        return true;
    }

如果我在execute方法中调用HelloWorldPlugin它的工作方式如果我在execute方法之外调用它不起作用...

1 个答案:

答案 0 :(得分:1)

这是我的错误,我导致主线程等待,因此没有任何操作在主线程上执行。删除了等待电话&一切都开始奏效了。使用回调上下文的正确方法是使用PluginResult类中提供的setKeepCallback函数。 向javascript发送无结果回调:

@Override
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
// some code....
PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT);
result.setKeepCallback(true);
callbackContext.sendPluginResult(result);
// some code....
} 

以后(可能是在网络呼叫或任何长期操作之后),可以使用以下命令将回调发送到javascript函数:

PluginResult result1 = new PluginResult(PluginResult.Status.OK, data);
result1.setKeepCallback(true);
callbackContext.sendPluginResult(result1);

我们也可以通过从cordova插件获取webview参考来调用java代码中的javascript函数。通过使用sendJavascript函数。