1

我正在尝试更新在 github 上找到的尚未更新的插件 (AdMob)

https://github.com/rajpara11/phonegap-plugins/blob/master/Android/AdMobPlugin/AdMobPlugin.java

相关代码是有效的,但需要一些修复:

public boolean execute(String action, JSONArray inputs, CallbackContext callbackContext)
{
    PluginResult result = null;

    if (ACTION_CREATE_BANNER_VIEW.equals(action)) {
        result = this.executeCreateBannerView(inputs);
    } else if (ACTION_REQUEST_AD.equals(action)) {
        result = executeRequestAd(inputs);
    } else {
        Log.d(LOGTAG, String.format("Invalid action passed: %s", action));
        callbackContext.error(String.format("Invalid action passed: %s", action));
    }

    // ...

}

我需要添加的是对result变量的检查,我正在考虑做这样的事情

if(result == PluginResult.Status.OK)
{
    callbackContext.success();
    return true;
}
return false;

但当然它不会工作......我怎样才能正确更新它?文档没有帮助,

而且我的Java还不够忍者:(

先感谢您

4

1 回答 1

2

我在核心插件中看到的方法是在类的开头有一个私有的 CallbackContext 变量,然后在你的 execute() 中,设置this.callbackContext = callbackContext 现在你可以使用 execute() 方法来比较操作的值字符串并委托给您的私有方法。在这些方法中,您将执行 callbackContext.sendPluginResult(...)。根据操作是否有效,您在 execute() 中返回 true 或 false。

所以我认为它应该看起来像:

public boolean execute(String action, JSONArray inputs, CallbackContext callbackContext)
{
    this.callbackContext = callbackContext;

    if (ACTION_CREATE_BANNER_VIEW.equals(action)) {
       this.executeCreateBannerView(inputs);
       return true;    // return true because this is a valid action
    } else if (ACTION_REQUEST_AD.equals(action)) {
        executeRequestAd(inputs);
        return true;
    } else {
        Log.d(LOGTAG, String.format("Invalid action passed: %s", action));
        return false;
        // could possibly do the following to send NO_RESULT:
        // callbackContext.sendPluginResult(newPluginResult.Status.NO_RESULT));
    }
}

然后:

private void executeCreateBannerView(inputs){
    //after doing all of your work:
    callbackContext.success();
    // or callbackContext.sendPluginResult() to pass data back 

}

希望这可以帮助。

于 2013-04-11T20:54:29.363 回答