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) に正しく含まれています。誰か助けてくれませんか?