0

Cordova 2.0.0 用のカスタム プラグインを作成しようとしています。作成したいカスタム プラグインは WP のアクセント カラーを取得する必要があるため、アプリの Style で使用できます。

しかし、私はそれを適切に機能させることができず、何が間違っているのかを理解できません。

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、 fromwin関数はまだ空で、何も出力しません。

すべての *.js ファイルはindex.html、head セクションのファイルに含まれています。通知からのコールバック メソッドが定義されていますが、何もしません。

WP7CordovaClassLib.Cordova.Commands名前空間も試しました。

4

3 に答える 3

0

これのC#部分は私のプラグインと同じように見えるので、問題ないと思います。

ただし、javascriptの部分は異なります。これが私の完全なplugin.jsです(smsへのナビゲーションに応答しないため、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();
    }

Cordova2.0を使用しています。コンソールでログメッセージを確認していることを確認してください。コルドバがどこかで失敗した場合、何かがログに記録されます。

于 2012-10-03T10:24:32.797 に答える
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) 
于 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 に答える