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

标签 java javascript cordova plugins

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

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仅使用新的IntentsetResult 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 内容中绑定(bind)了点击处理程序的标签触发的。 当我将标签和单击处理程序移动到父文档时,问题就解决了。

你能尝试一下吗?

关于java - 第二次插件调用后收到 Cordova 插件回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23653961/

相关文章:

javascript - 将 KnockoutJS 与分离节点一起使用

cordova - “Remember Me” PhoneGap 应用程序中的功能

java - 在 Spring MVC 应用程序中查找内存泄漏

java - 发送电子邮件的问题 sendgrid

javascript - 按钮不改变背景和文本的颜色

javascript - 如何在 PhoneGap 中使用 Magento API Soap Web 服务

android - MSBUILD : cordova-build error : Error: cmd: Command failed with exit code ENOENT

java - 使用二进制信号量

java - 如何从现有对象的类外部调用该对象的函数?

javascript - 如何在指令中将元素推送到数组 - AngularJS