2012-09-22 108 views
0

我正在尝试为科尔多瓦2.0.0编写自定义插件。 我想制作的自定义插件必须获取WP重音颜色,所以我可以在应用程序样式中使用它。自定义科尔多瓦插件

但我无法设法使其正常工作,无法弄清楚我做错了什么。

Index.js

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

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

GetTheme.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.html文件中。 通知中的回调方法已定义,但它什么都不做。

我也尝试了WP7CordovaClassLib.Cordova.Commands命名空间。

回答

0

Cordova documentation page

// 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) 
+0

感谢您的回答,但不幸的是它没有帮助。我删除了一些无用的测试代码,并且我注意到我的插件甚至没有被调用。 – sebastian

0

找到这些问题的答案将会有助于你(和我们)明白为什么你的插件不被称为....

  • isDeviceReady被调用?
  • 点击被调用?
  • 这对我来说很陌生“navigator.notification.alert(回调,
    回调,”text“,”button“);”这应该怎么做
  • VS.NET的输出窗口是否显示任何JS错误,它们是
    阻止其他js执行?
+0

要回答你的问题: -onDeviceReady被称为 -click被称为 -'navigator.notification.alert()显示WP7风格确认。 - 无VS.NET或JS中显示的错误 我已经尝试了插件的不同位置,但仍然没有。我设法通过编辑和现有的插件来实现它。 PhoneGap网站上的示例有很多不同之处。 – sebastian

+0

如果插件名称中存在命名空间问题,即我的插件没有被调用,即cordova exec的第三个参数是错误的。如果没有为cordova exec的options参数(第5个参数)提供值或错误值,我也看到了我的插件未被调用。 – CedricB

0

这个C#部分看起来和我的插件完全一样,所以我觉得没问题。

但是,javascript部分不同。这是我的完整插件。JS(真正简单的插件,它会调用Windows Phone上的创造,新的短信任务,因为它没有导航回应短信:计划的像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在某处失败,则会记录一些内容。

相关问题