Bar*_*rni 6 java android phonegap-plugins cordova
我构建了一个非常简单的PhoneGap插件来开始测试我将在Android上构建一些本机操作的方式.
JavaScript的:
function callNativePlugin() {
cordova.exec(nativePluginResultHandler, nativePluginErrorHandler, "Database", "saveAdvertencia", [ 1, "TesteAdv" ]);
}
function nativePluginResultHandler(result) {
alert("SUCCESS: \r\n" + result);
}
function nativePluginErrorHandler(error) {
alert("ERROR: \r\n" + error);
}
Run Code Online (Sandbox Code Playgroud)
Java的:
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("saveAdvertencia")) {
advertenciaDS = new AdvertenciaDS(cordova.getActivity());
callbackContext.sendPluginResult(new PluginResult(Status.OK, new JSONArray("test")));
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我需要的是一种从同一方法中的动作中检索结果的方法.总是处理3个方法(1执行动作.1定义成功动作是什么.1定义什么是错误动作.)当你没有真正控制它们何时被调用时,这是非常复杂的,因为PhoneGap在操作完成后调用它们.
如果我需要从Android Native数据库中检索一些数据:
我使用这个模式只对插件提供的函数进行一次回调:
function callNativePlugin(callback) {
cordova.exec(function(result) {
callback(null, result);
}, function(result) {
callback("myerror");
}, "Database", "saveAdvertencia", [ 1, "TesteAdv" ])
};
Run Code Online (Sandbox Code Playgroud)
这样就得到了node.js样式的回调,其中第一个参数是错误,第二个是结果:
//define the callback function
var callbackFunction = function(err, result) {
if (err) {
console.log("there was an error");
} else {
console.log("success", result);
}
};
//call the plugin
callNativePlugin(callbackFunction);
Run Code Online (Sandbox Code Playgroud)
您无法避免插件中有两个回调,因为这是由cordova API强制要求的,但您不必将其暴露给您的插件用户.
| 归档时间: |
|
| 查看次数: |
6711 次 |
| 最近记录: |