0

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

但我无法让它正常工作,也无法弄清楚我做错了什么。

索引.js

function onDeviceReady() {
    click();
}
function click() {
    navigator.notification.alert(callback, callback, "text", "button");
    window.getAccentColor();
}

获取主题.cs

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);
     }
   }
 }

获取主题.js

window.getAccentColor = function () {
    cordova.exec(win, error, "GetTheme", "Get");
}

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


function error() {
}

我注意到有些事情有点奇怪。随着点击动作上的通知弹出,“2”被写入输出。但没有它不会输出任何东西。

在这两种情况下resultwin函数仍然是空的并且不输出任何东西。

所有 *.js 文件都包含在index.htmlhead 部分的文件中。通知中的回调方法已定义,但它什么也不做。

我也尝试过使用WP7CordovaClassLib.Cordova.Commands命名空间。

4

3 回答 3

0

这部分的 C# 部分看起来与我的插件相同,所以我认为这很好。

然而,javascript 部分是不同的。这是我完整的 plugin.js(非常简单的插件,它会在 Windows Phone 上启动 create-new-sms 任务,因为它不响应导航到 sms:scheme 就像 iOS 和 Android)

function SMSComposer() {
    this.resultCallback = null;
}

SMSComposer.prototype.showSMSComposer = function (toRecipients, body) {

    var args = {};
    var smsComposerOk = function () { console.log("SMSComposer Called OK"); };
    var smsComposerError = function (error) { console.log("SMSComposer error:" + error); };
    if (toRecipients) {
        args.toRecipients = toRecipients;
    }

    if (body) {
        args.body = body;
    }

    Cordova.exec(smsComposerOk, smsComposerError, "SendSMS", "send", args);
};

SMSComposer.install = function () {
    console.log("SMSComposer being installed");
    if (!window.plugins) {
        window.plugins = {};
    }
    window.plugins.SMSComposer = new SMSComposer();

    return window.plugins.SMSComposer;
};

在我的 onDeviceReady() 我有.....

    if (window.device && window.device.platform == "WinCE") {
        SMSComposer.install();
    }

我正在使用 Cordova 2.0。确保您正在检查控制台的日志消息。如果 Cordova 在某处发生故障,则会记录一些内容。

于 2012-10-03T10:24:32.797 回答
0

Cordova 文档页面

// all JS callable plugin methods MUST have this signature!
// public, returning void, 1 argument that is a string

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

     public void Get()

进入

     public void Get(string options) 
于 2012-09-25T17:32:36.377 回答
0

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

  • 是否调用了 onDeviceReady?
  • 点击是否被调用?
  • 这对我来说看起来很陌生“navigator.notification.alert(callback,
    callback, "text", "button");" 那应该怎么做
  • VS.NET 的输出窗口是否显示
    阻止其余 js 执行的任何 JS 错误?
于 2012-09-28T18:41:20.410 回答