如以下文档所示:http://docs.phonegap.com/en/3.5.0/guide_platforms_android_plugin.md.html#Android%20Plugins
我覆盖了一个方法
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if ("beep".equals(action)) {
this.beep(args.getLong(0));
callbackContext.success();
return true;
}
return false; // Returning false results in a "MethodNotFound" error.
}
然后像这样从 Javascript 中调用它:
cordova.exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
上面的 java native 代码只返回一个 bool 结果。如何让它返回一个字符串(或 JSON)并让 cordova.exec() 接收它?
p/s:我想使用 java native 代码从电子邮件中读取 JSON 字符串(项目列表)。它将返回到 Javascript 代码以呈现到 Sencha Touch 中的列表
最佳答案
您所链接的文档页面中提供了您问题的答案。检查页面上的最后一个代码示例:
private void echo(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
callbackContext.success(message); //<-THIS LINE
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
根据文档:“callbackContext.success() 将原始消息字符串作为参数传递回 JavaScript 的成功回调。”
所以在 JS 中,如果你定义成功回调函数如下:
function onSuccess(message){
console.log(message);
}
并调用它:
cordova.exec(onSuccess, ...)
它应该在成功时输出传递的 message
字符串参数的内容。
关于android - Cordova 插件 - Javascript 从 native 代码接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196254/