(Cordova插件创建)OnActivity结果在其他活动完成之前被调用

时间:2016-12-21 17:16:48

标签: android cordova cordova-plugins

所以, 我正在创建一个cordova插件,通过Action启动另一个活动并等待它的答案。问题是在其他活动完成之前调用onActivityResult方法。

Plugin.java

public class Plugin extends CordovaPlugin {
    CallbackContext mCallbackContext = null;

    @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
        mCallbackContext = callbackContext;
        this.cordova.setActivityResultCallback(this);
        Intent intent = new Intent();
        intent.setAction("com.myaction");
        this.cordova.startActivityForResult(this, intent, intent.getAction().hashCode());
    }

    @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        Toast.makeText(this.cordova.getActivity(), "Result came " + resultCode, Toast.LENGTH_SHORT).show();
        mCallbackContext.sendPluginResult (new PluginResult (PluginResult.Status.OK));
    }
}

基本上它会通过操作启动活动,当新活动正在运行时,onActivityResult会被resultCode = 0调用。

如何在其他活动完成后调用onActivityResult

1 个答案:

答案 0 :(得分:1)

我这几天一直在努力奋斗!在我的情况下,这种情况发生是因为执行startActivityForResult方法的活动是作为singleInstance启动的,它不允许在与自身相同的任务中启动其他活动,因此启动的活动生活在另一个任务中并且无法发回结果,这就是在onActivityResult方法之后立即触发startActivityForResult方法的原因。希望它有所帮助!