第二次插件调用后收到Cordova插件回调

我创建了一个cordova插件(3.3.0),它启动一个活动并等待结果。 但回调(简单警报)直到插件第二次出现才开始调用。 这是代码:

public boolean execute(String action, final JSONArray args, final CallbackContext cbc) throws JSONException { this.callbackContext = cbc; try { Intent i = new Intent(cordova.getActivity(), ActivityCamera.class); this.cordova.setActivityResultCallback(PhotoMokoPlugin.this); this.cordova.startActivityForResult(PhotoMokoPlugin.this, i, 0); PluginResult pr = new PluginResult(PluginResult.Status.NO_RESULT); pr.setKeepCallback(true); callbackContext.sendPluginResult(pr); return true; } catch (JSONException e) { callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION)); return false; } } @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); try { callbackContext.success(json.toString()); // Doesn't matter if success or error } catch (JSONException e) { callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR)); } } 

ActivityCamera只有setResult有一个新的Intent avec finish() ;

例如:如果我点击调用该插件的按钮,则没有任何反应。 我再次点击,显示警报消息,仅此而已(通常是另一个警报)……

你有什么主意吗 ?

告诉我是否需要更多代码。

编辑:更新Cordova没有解决问题。

编辑2:问题似乎来自这段代码:

 @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } } 

如果我删除它,第一次调用回调。 有问题吗?

在这种情况下我也遇到了麻烦。

在我的例子中,插件是从一个标签触发的,其中iframe内容中绑定了单击处理程序。 当我移动标签并单击处理程序到父文档时,问题就解决了。

你能尝试这些吗?

我为我解决了这个问题,希望它适用于其他人。 我正在使用require.js,当我在代码中多次调用require(“cordova”)时出现问题,在我删除冗余后需要问题消失。

对我来说,问题只是HTML文档中存在空iframe标记。 删除iframe完全解决了问题。 感谢장지윤让我指向正确的方向。