我正在尝试更新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
}
希望这可以帮助。