Пользовательский плагин Cordova - метод обратного вызова выполняется до завершения выполнения метода в Java - PullRequest
0 голосов
/ 24 октября 2018

Я разработал один пользовательский плагин Cordova.Плагин работает хорошо, но функция обратного вызова вызывается перед выполнением метода run.Он показывает «недопустимое действие».

Я хочу вызвать метод обратного вызова в случае успешного завершения метода run.Ниже мои файлы

1.файл провайдера (ts file) в ионном приложении

@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), функция обратного вызова success получит выполнение, но покажет результат после двойного вызова функции.

То, что я хочу, я хочу вызывать метод callback успеха только после onExit метода.

Это достижимо?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...