我正在尝试更新在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不够忍者:(
提前谢谢
答案 0 :(得分: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
}
希望这会有所帮助。