我开发了一个cordova自定义插件。插件运行良好,但是在运行方法执行之前调用了回调函数。它显示“无效操作”。
我想在运行方法完成时调用成功回调方法。以下是我的文件
1。离子应用程序中的提供程序文件(ts文件)
@Cordova({
successIndex : 1,
errorIndex : 2,
observable: true
})
triggerWid(options: any): Observable<any> {
return;
}
2。 ts文件中的插件调用方法
triggerWidget() {
const watch = this.payment.triggerWid({
_sMessage: "Hello World"
}).subscribe((result) => {
alert(JSON.stringify(result, undefined, 2));
}, (err) => {
alert(JSON.stringify(err, undefined, 2));
});
3。插件js文件
module.exports.triggerWid = function(arg0, success, error) {
exec(success, error, 'TestPayment', 'triggerWid', [arg0]);
}
4。 Java文件
if (action.equals("triggerWid")) {
String message = args.getString(0);
this.triggerWid(message, callbackContext);
}
我正在从同一文件中调用triggerWid方法。
private void triggerWid(String message, CallbackContext callbackContext) {
Context context = this.cordova.getActivity().getApplicationContext();
WidgetBuilder widgetBuilder = new WidgetBuilder()
.setApiKey(LIQUIDPAY_API_KEY)
.setApiSecret(LIQUIDPAY_SECRET_KEY)
.setApplicationContext(context)
.build();
try {
widgetBuilder.run(new WidgetInterface() {
@Override
public void onExit() {
// result_status.setTextColor(Color.BLACK);
// result_status.setText(R.string.done);
CALLBACK_MESSAGE = "Done";
callbackContext.success("Done");
new Utils().showToast(context, "Widget Triggered");
}
});
} catch (IllegalStateException e) {
Log.e("WIDGET ACCESS", e.getMessage());
CALLBACK_MESSAGE = e.getMessage();
callbackContext.error("Error");
}
// callbackContext.success(CALLBACK_MESSAGE);
}
在上述功能中,我收到无效的操作。但是,如果取消注释callbackContext.success(CALLBACK_MESSAGE),则成功的回调函数将被执行,但在两次调用该函数后会显示结果。
我想只在onExit
方法之后才调用成功回调方法。
这是可以实现的吗?