3

Hi Iam windows phone fresher.Can anyone tell me how to call C# methods in javascript in Phonegap(windows mobile).Thank you.

Iam getting the following error.

error: "Unable to locate command :: MyCommand".

This is my code Behind file

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: 
        }
    }
}
}

Here is my Index.html file:

<!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>
1
  • 2
    don't confuse Java with Javascript :) Commented May 3, 2012 at 6:54

2 Answers 2

1

You should be able to accomplish this using the plugin architecture and the PhoneGap.exec() method.

Create a class in c# that inherits from BaseCommand (you must also use this specific namespace):

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

Call this method from Javascript:

var args = {"message":"whatever"};    
PhoneGap.exec(null, null, "MyCommand", "DoThis", args);
Sign up to request clarification or add additional context in comments.

6 Comments

Hi Johansson,thank you and I tried with the above code but it is giving the error like "phonegap is undefined",shall i do any changes?
Iam getting error by trying this code,can u pls explain me the above code y i got the error?thanks in advance
Have you used that exact namespace?
yah,eventhough it is giving error.do i need to make any external changes?thank you.
Then you probably haven't defined args before calling the method. This is basic stuff. I have updated my answer.
|
1

You can use the Notify method inconjunction with the ScriptNotify event handler, as detailed in the following blog post :-

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.