cómo llamar al código c# desde javascript en phonegap windows phone

Hola, tengo Windows Phone más reciente. ¿Alguien puede decirme cómo llamar a los métodos de C# en javascript en Phonegap (Windows Mobile). Gracias.

Estoy teniendo el siguiente error.

error: "No se puede localizar el comando :: MyCommand".

Este es mi código Detrás del archivo

using System;
using System.Collections.Generic;
using System.Linq; using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.IO;
using System.Windows.Media.Imaging;
using System.Windows.Resources;
using WP7CordovaClassLib.Cordova.Commands;
namespace CSharpToJS
{
public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void GapBrowser_Loaded(object sender, RoutedEventArgs e)
    {

    }

}
namespace WP7GapClassLib.PhoneGap.Commands
{
    public class MyCommand : BaseCommand
    {
        public void DoThis(string args)
        {
            // TODO: 
        }
    }
}
}

Aquí está mi archivo Index.html:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, height=device-height, initial-    scale=1.0, maximum-scale=1.0, user-scalable=no;" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Cordova WP7</title>
<link rel="stylesheet" href="master.css" type="text/css" media="screen" title="no title" charset="utf-8" />
<script type="text/javascript" charset="utf-8" src="cordova-1.5.0.js"></script>
<script type="text/javascript">
    document.addEventListener("deviceready", onDeviceReady, false);
    // once the device ready event fires, you can safely do your thing! -jm
    function onDeviceReady() {
        document.getElementById("welcomeMsg").innerHTML += "Cordova is ready! version=" + window.device.cordova;
        console.log("onDeviceReady. You should see this message in Visual Studio's output window.");
        var args = { "message": "whatever" };
        Cordova.exec(null, null, "MyCommand", "DoThis", args);
    }
  </script>
 </head>
  <body>
 <h1>
    Hello Cordova</h1>
<div id="welcomeMsg">
</div>
</body>
</html>

preguntado el 03 de mayo de 12 a las 07:05

no confundas Java con Javascript :) -

2 Respuestas

Debería poder lograr esto usando el arquitectura del complemento y PhoneGap.exec() método.

Cree una clase en C# que herede de BaseCommand (también debe usar este espacio de nombres específico):

namespace WP7GapClassLib.PhoneGap.Commands
{
    public class MyCommand : BaseCommand
    {
      public void DoThis(string args)
      {
        // TODO: 
      }
    }
}

Llame a este método desde Javascript:

var args = {"message":"whatever"};    
PhoneGap.exec(null, null, "MyCommand", "DoThis", args);

contestado el 04 de mayo de 12 a las 08:05

Hola Johansson, gracias. Probé con el código anterior, pero aparece el error "phonegap no está definido", ¿debería hacer algún cambio? - Akil Pandu

Recibo un error al probar este código, ¿pueden explicarme el código anterior y obtuve el error? Gracias de antemano. Akil Pandu

¿Ha utilizado ese espacio de nombres exacto? - Magnus Johansson

sí, aunque está dando error. ¿Necesito hacer algún cambio externo? gracias. - Akil Pandu

Entonces probablemente no haya definido argumentos antes de llamar al método. Esto es algo básico. He actualizado mi respuesta. - Magnus Johansson

Puede usar el método Notify junto con el controlador de eventos ScriptNotify, como se detalla en la siguiente publicación de blog:

http://blogs.msdn.com/b/glengordon/archive/2011/11/21/phonegap-on-wp7-tip-2-script-interaction.aspx

contestado el 03 de mayo de 12 a las 08:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.