我正在尝试更新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忍者还不够:(

先感谢您

最佳答案

我在核心插件中看到的方法是在类的开头有一个私有的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

}


希望这可以帮助。

10-08 14:50