所以,
我正在创建一个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
?
答案 0 :(得分:1)
我这几天一直在努力奋斗!在我的情况下,这种情况发生是因为执行startActivityForResult
方法的活动是作为singleInstance
启动的,它不允许在与自身相同的任务中启动其他活动,因此启动的活动生活在另一个任务中并且无法发回结果,这就是在onActivityResult
方法之后立即触发startActivityForResult
方法的原因。希望它有所帮助!