Intento lo que intenta hacer antes, con actualizaciones en phonegap a la versión 2.0.0 y hacia arriba la mejor manera de hacerlo es con el complemento. Esta es la carpeta js en phonegap dentro de los activos. Asegúrese de construir el elemento div con id "nativecall" y un botón de muestra para detectarlo. Asegúrese de ver LogCat para verificar los mensajes de error.
window.echo = function(str, callback) {
cordova.exec(callback, function(err) {
callback('Nothing to echo.');
}, "Echo", "echo", [str]);
};
var app = {
// Application Constructor
initialize: function() {
this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'app.receivedEvent(...);'
onDeviceReady: function() {
app.receivedEvent('deviceready');
},
// Update DOM on a Received Event
receivedEvent: function() {
var abiter = $('#nativecall').html();
$("#abutton").click(function() {
window.echo(abiter, function(echoValue) {
alert(echoValue = abiter); // should alert true.
});
});
}
};
app.initialize();
en src agregar un nuevo método de clase con el nombre del servicio "Echo".
package org.apache.cordova.plugin;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.plugin.AndroidActivities;
import org.apache.cordova.api.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
/**
* This class echoes a string called from JavaScript.
*/
public class Echo extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("echo")) {
String message = args.getString(0);
new AndroidPublicFunction(message); //call function from AndroidActivities
this.echo(message, callbackContext);
return true;
}
return false;
}
private void echo(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
callbackContext.success(message);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
}
Publicar registro de errores por favor. –