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

时间:2014-05-14 11:52:10

标签: java javascript cordova plugins

我创建了一个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));
    }
}

只有setResult的ActivityCamera有一个新的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);
    }
}

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

3 个答案:

答案 0 :(得分:1)

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

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

你能尝试这些吗?

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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