android - PhoneGap 2.0 中未定义的 EXEC 方法

标签 android cordova

当尝试执行 phonegap 插件方法时,应用程序引发此错误:

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

应用中包含的代码:

Javascript插件链接(文件settingwrite.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)。有人可以帮助我吗?

最佳答案

你在什么时候调用 setActualPositiondeviceready 事件是否已触发?如果它没有触发,您将无法访问 cordova 对象。

关于android - PhoneGap 2.0 中未定义的 EXEC 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11739757/

相关文章:

android - 在 AChartEngine 中组合折线图和条形图

android - 抽屉导航图标未显示(Sherlock 操作栏)

java - 保持登录 CheckBox Android

android - 如何消除android gradle中的默认构建变体

Android+PhoneGap 致命异常

ios - 更新 phonegap cordova 版本

android - 带有 Cordova 的 Braintree 用于在应用程序中购买以进行功能升级

Coldfusion CFC 的 JQuery 搜索输入

javascript - Cordova/Phonegap 在主 Cordova webview 中加载外部站点

java - 我收到 org.json.JSONException : No value for an item ,,它出现在我的 json 数组中