Windows phone 7 自定义Cordova插件

Windows phone 7 自定义Cordova插件,windows-phone-7,cordova,phonegap-plugins,cordova-2.0.0,Windows Phone 7,Cordova,Phonegap Plugins,Cordova 2.0.0,我正在尝试为Cordova 2.0.0编写一个自定义插件。 我想制作的自定义插件必须获得WP强调色,这样我就可以在应用程序样式中使用它 但我无法使它正常工作,也无法找出我做错了什么 Index.js function onDeviceReady() { click(); } function click() { navigator.notification.alert(callback, callback, "text", "button"); window.getAcc

我正在尝试为Cordova 2.0.0编写一个自定义插件。 我想制作的自定义插件必须获得WP强调色,这样我就可以在应用程序样式中使用它

但我无法使它正常工作,也无法找出我做错了什么

Index.js

function onDeviceReady() {
    click();
}
function click() {
    navigator.notification.alert(callback, callback, "text", "button");
    window.getAccentColor();
}
namespace Cordova.Extension.Commands
 {
   // Use the phonegap base class
   public class GetTheme : BaseCommand 
   {
     public void Get()
     {
         Color currentColorHex = (Color)Application.Current.Resources["PhoneAccentColor"];
         var result = new PluginResult(PluginResult.Status.OK, currentColorHex.ToString());
         DispatchCommandResult(result);
     }
   }
 }
window.getAccentColor = function () {
    cordova.exec(win, error, "GetTheme", "Get");
}

function win(result) {
    console.log(result);
    console.log("2");
};


function error() {
}
GetTheme.cs

function onDeviceReady() {
    click();
}
function click() {
    navigator.notification.alert(callback, callback, "text", "button");
    window.getAccentColor();
}
namespace Cordova.Extension.Commands
 {
   // Use the phonegap base class
   public class GetTheme : BaseCommand 
   {
     public void Get()
     {
         Color currentColorHex = (Color)Application.Current.Resources["PhoneAccentColor"];
         var result = new PluginResult(PluginResult.Status.OK, currentColorHex.ToString());
         DispatchCommandResult(result);
     }
   }
 }
window.getAccentColor = function () {
    cordova.exec(win, error, "GetTheme", "Get");
}

function win(result) {
    console.log(result);
    console.log("2");
};


function error() {
}
GetTheme.js

function onDeviceReady() {
    click();
}
function click() {
    navigator.notification.alert(callback, callback, "text", "button");
    window.getAccentColor();
}
namespace Cordova.Extension.Commands
 {
   // Use the phonegap base class
   public class GetTheme : BaseCommand 
   {
     public void Get()
     {
         Color currentColorHex = (Color)Application.Current.Resources["PhoneAccentColor"];
         var result = new PluginResult(PluginResult.Status.OK, currentColorHex.ToString());
         DispatchCommandResult(result);
     }
   }
 }
window.getAccentColor = function () {
    cordova.exec(win, error, "GetTheme", "Get");
}

function win(result) {
    console.log(result);
    console.log("2");
};


function error() {
}
我注意到有些事情有点奇怪。 通过单击弹出的通知,输出中将写入操作“2”。但是如果没有它,它不会输出任何东西

在这两种情况下,
win
函数的
result
仍然为空,不输出任何内容

所有*.js文件都包含在head部分的
index.html
文件中。 通知中的回调方法已定义,但它不执行任何操作

我还尝试了
WP7CordovaClassLib.Cordova.Commands
名称空间。

来自

所以,在你的GetTheme.cs中,改变

     public void Get()
进入


找到这些问题的答案将帮助你(和我们)理解为什么你的插件没有被调用

  • 有人叫onDeviceReady吗
  • 正在呼叫click吗
  • 这对我来说是陌生的“navigator.notification.alert(回调,
    回叫,“文本”,“按钮”);“那该怎么办?”
  • VS.NET的输出窗口是否显示任何JS错误
    阻止其余的js执行
    • 这个插件的C#部分看起来与我的插件完全相同,所以我认为它很好

      但是javascript部分不同。这是我完整的plugin.js(在Windows Phone上启动创建新短信任务的非常简单的插件,因为它不响应短信导航:方案类似于iOS和Android)

      在我的字典里我有

          if (window.device && window.device.platform == "WinCE") {
              SMSComposer.install();
          }
      
      我用的是Cordova 2.0。
      确保您正在检查控制台中的日志消息。如果Cordova在某个地方出现故障,则会记录一些信息。

      感谢您的回答,但不幸的是,它没有帮助。我删除了一些无用的测试代码,我注意到我的插件甚至没有被调用。为了回答您的问题:-onDeviceReady被调用-click被调用-
      navigator.notification.alert()
      显示WP7样式的确认-在VS.NET或JS中没有显示错误,我尝试了插件的不同位置,但仍然没有结果。我已经设法通过编辑和现有的插件使它工作。PhoneGap网站上的例子有很多不同之处。我看到如果插件名称中存在名称空间问题,我的插件不会被调用,即cordova exec的第三个参数是错误的。我还看到,如果cordova exec的options参数(第5个参数)没有值或提供的值不正确,我的插件就不会被调用。