我正在尝试为Cordova 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"写在输出中。但没有它就不能输出任何东西。
在这两种情况下,来自result
函数的win
仍为空,并且不会输出任何内容。
所有* .js文件都包含在head部分的index.html
文件中。
通知中的回调方法已定义,但它什么也没做。
我也尝试使用WP7CordovaClassLib.Cordova.Commands
命名空间。
答案 0 :(得分:0)
// 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)
答案 1 :(得分:0)
找到这些问题的答案将有助于您(和我们)理解为什么您的插件没有被调用....
答案 2 :(得分:0)
这个C#部分与我的插件完全相同,所以我认为没问题。
然而,javascript部分是不同的。这是我的完整plugin.js(非常简单的插件,可以启动Windows Phone上的create-new-sms任务,因为它不响应导航到短信:方案就像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在某处失败,则会记录一些内容。