1

phonegap プラグイン メソッドを実行しようとすると、アプリケーションで次のエラーが発生します。

TypeError 'undefined' is not a function (evaluating 'cordova.exec( ...

アプリに含まれるコード:

Javascript プラグイン リンク (ファイル settingswrite.js)

window.SettingsWrite = function(objectData, successCallback, failureCallback) {

    var options = {};
    for (var key in objectData) {
      options[key] = objectData[key];
    }
    cordova.exec(
                successCallback,
                failureCallback,
                'SettingsWrite',
                'set',
                new Array(options)
            );
    };

プラグインを利用する Javascript コード (ファイル app.js)

function setActualPosition() {

    // appMap is an application global object
    var map = appMap.getMapEdgesProjection();

    window.SettingsWrite([{
            x: map.minh,
            y: map.maxh
    }], 
    function(r){
       alert(r);
    },
    function(e){
         alert("Operation error");
         console.log('ERROR: ' + e);
    });
}

プラグインは config.xml で次のように宣言されています。

<plugin name="SettingsWrite" value="es.mycompany.cordova.plugin.SettingsWrite"/>

Javascript コードが実行されます index.html (assets フォルダーにあり、WebView に含まれています):

<!DOCTYPE html>
<html>
    <head>

        <title>Test Mobile</title>

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <meta name="apple-mobile-web-app-capable" content="yes">

        <script src="assets/js/cordova-2.0.0.js"></script>
        <script src="assets/js/jquery-1.7.2.min.js"></script>
        <script src="assets/js/settingswrite.js"></script>
        <script src="assets/js/app.js"></script>

    </head>
    <body>
        <div id="divMapContainer"></div>
    </body>
</html>

プラグイン Java クラス (Phonegap ドキュメントで定義):

public class SettingsWrite extends Plugin {

     public static final String ACTION = "set";

     @Override
     public PluginResult execute(String action, JSONArray data, String callbackId) {

           if(ACTION.equals(action)) {
            .
            .
            .
           } else {
            .
            .
            .
           }
     }

プラグインは Android 3.1 デバイスで実行され、必要なすべてのファイルがプロジェクト (cordova-2.0.0.js および cordova-2.0.0.jar) に正しく含まれています。誰か助けてくれませんか?

4

2 に答える 2

1

どの時点で電話していsetActualPositionますか? devicereadyイベントは発生しましたか?cordova起動していない場合は、オブジェクトにアクセスできません。

于 2012-08-03T09:42:35.660 に答える
0

私はあなたと同じエラーを受け取っていました。この投稿には修正があります:

datePickerプラグインがPhonegap2.0で機能しない

于 2012-08-03T09:31:16.597 に答える