如何等待子活动完成

How to wait for the child activity to finish

本文关键字:活动 等待 何等待      更新时间:2023-09-26

我正在尝试制作一个phonegap/cordova插件,用于使用RecognizerIntent将语音转换为文本。以下是我的插件类代码:

public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
    this.callbackContext = callbackContext;
    try {
        if (ACTION_INVOKE_SPEECH_RECOG.equals(action)) { 
            //JSONObject arg_object = args.getJSONObject(0);
            Intent calIntent =  new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            calIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
            this.cordova.setActivityResultCallback(SpeechToTextPlugin.this);
            this.cordova.getActivity().startActivityForResult(calIntent,REQUEST_CODE );
            callbackContext.success("Completed Main Activity");
        }
        callbackContext.error("Invalid action");
        return false;
       } catch(Exception e) {
           System.err.println("Exception: " + e.getMessage());
           callbackContext.error(e.getMessage());
           return false;
    } 
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
      if (resultCode == Activity.RESULT_OK) {
          JSONObject obj = new JSONObject();
          try {
              //obj.put("TEXT", intent.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS).toString());
              callbackContext.success(intent.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS).toString());
          }catch(JSONException e){
          }
          super.onActivityResult(requestCode, resultCode, intent);
      }
}

我将识别出的文本传递给调用execute方法的javascript。现在,在调用startActivityForResult之后,execute函数返回。如何将已识别的单词传递给js?

您必须使用

sendJavascript("yourJSClass.yourJSMethod();");

或者只是

sendJavascript("yourJSMethod();");

当然你必须有:

yourJSMethod = function() {}

在您的JS 中