我开发了一个Android PhoneGap插件。该插件已成功调用,但成功回调是在JavaScript中的失败回调函数中调用的。
在JavaScript代码中,我警告成功和失败结果,但在模拟器中,成功结果是失败回调。
有没有人知道在失败回调中调用成功回调时会出现什么问题?
请帮帮我
以下是我的javascript代码:
function syncRow(){
window.plugins.mobileMojo.runSyncRule(
synchRule,
function(e){},
function(r){alert(r)}
);
}
Java PluginClass代码:
try{
String ruleName = data.getString(0);
String findData = null;
Log.d(logId, action + " " + ruleName);
if (!data.isNull(1)) {
JSONObject jFindData = data.getJSONObject(1);
Log.d(logId, action + data);
Log.d(logId, action + jFindData);
Hashtable findHash = new Hashtable();
JSONArray columns = jFindData.getJSONArray("data");
Log.d(logId, action + jFindData);
for (int i = 0; i < columns.length(); i++) {
JSONObject jCol = columns.getJSONObject(i);
JSONArray keys = jCol.names();
for (int k = 0; k < keys.length(); k++) {
String keyName = keys.getString(k);
findHash.put(keyName, jCol.getString(keyName));
}
}
findData = DataTable.createFindString(findHash);
}
Log.d(logId, action + " " + ruleName);
MapApp.getApp().runSynchRule(ruleName, findData);
result = new PluginResult(PluginResult.Status.OK);
}
catch(Exception e){
String msg = "Error in " + logId + " " + action + ": " + e;
String s = "Exception: " + e.getClass().getName() + ":" + e.getMessage() + " in" + " "+ action;
//String s = new PluginResult(PluginResult.Status.SYNC_EXCEPTION).status + " " +":" +" " + new PluginResult(PluginResult.Status.SYNC_EXCEPTION).message;
Log.d(logId, msg);
result = new PluginResult(PluginResult.Status.SYNC_EXCEPTION, s);
}
}
结果:在失败回调中警告成功消息为OK。
我调试了代码,但没有发现任何问题。但是在运行应用程序时,它会在失败回调中提供成功消息。
我正在使用cordova-1.8.1版本。