PhoneGap - exec()调用未知插件

时间:2013-09-19 04:29:33

标签: javascript android cordova

我一直在尝试在我的项目中使用Phonegap Image Resizer插件,但我无法使其正常工作。

错误日志返回: D/PluginManager(13992): exec() call to unknown plugin: com.webXells.imageResizer

我已将所有必要的东西移到我的项目文件夹中。这是结构:

/assets
 /js
  cordova.js
  imageresize.js
 /www
  index.html
  upload.html
/src
 /com
  /webXells
   /ImageResizer
     ImageResizerPlugin.java

我还将插件添加到config.xml中的/res/xml

<feature name="imageResizer">
  <param name="android-package" value="com.webXells.imageResizer.ImageResizePlugin"/>
</feature> 

upload.html我已经包含了这样的插件:

<script type="text/javascript" charset="utf-8" src="../js/imageresize.js"></script>

这就是我调用方法来使用它的方法:

    function onPhotoDataSuccess(imageData) {
      window.imageResizer.resizeImage(
        function(data) { 
          var smallImage = document.getElementById('smallImage');
          smallImage.style.display = 'block';
          image.src = "data:image/jpeg;base64," + imageData; 
          //image.src = imageData; 
        },
        function (error) {
          console.log("Error : \r\n" + error);
        },
        imageData,
        0.5,
        0.5,
        {
          imageDataType:ImageResizer.IMAGE_DATA_TYPE_BASE64,
          resizeType:ImageResizer.RESIZE_TYPE_FACTOR,
          format:'jpg'
        }
      );
}

所以,在imageresize.js里面,我想使用的方法看起来像这样。如有必要,您可以参考以上链接:

ImageResizer.prototype.resizeImage = function(success, fail, imageData, width,
        height, options) {
    if (!options) {
        options = {}
    }
    var params = {
        data : imageData,
        width : width,
        height : height,
        format : options.format,
        imageDataType : options.imageType,
        resizeType : options.resizeType,
        quality : options.quality ? options.quality : 70
    };

    return cordova.exec(success,fail,"com.webXells.imageResizer","resizeImage",[params]);
}

在上面的代码中,我注意到com.webXells.imageResizer没有按照logcat中的报告进行调用。令我感到困惑的是,我已将其包含在config.xml中并将java文件移至src文件夹中。即使我做了所有必要的事情,为什么不能打电话呢?

我做了一些研究,说要在plugin.xml中声明插件,但我没有res/xml内的文件。所以,我把它放在config.xml中。 Other建议使用<gap:plugin name="com.phonegap.plugins.example" />,但Eclipse发现错误。

那么,我该如何解决这个问题呢?我是否正确调用了HTML中的方法?或者我错过了什么?

2 个答案:

答案 0 :(得分:1)

从cordova 3.5.0-0.2.6开始,res / xml / config.xml在构建时被覆盖。尝试将功能标记添加到应用根目录中的config.xml。为我工作。

答案 1 :(得分:0)

您是使用CLI添加插件,如“corodova add plugin xyz”还是手动将插件添加到eclipse项目? 如果你手动添加插件,那么当运行“cordova run android / ios”时,res文件夹中的config.xml会被覆盖,所以上面的错误。 我找到了一个hack /解决方案,因为我使用的是基于CLI的revmob插件,我们必须手动添加插件。在你的project / plugins文件夹中有android.json你必须在那个config.xml中添加功能标签通过CLI运行应用程序时重新获得

这是样本

"config_munge": {
 "res/xml/config.xml": {
        "/*": {
            "<feature name=\"Device\"><param name=\"android-package\" value=\"org.apache.cordova.device.Device\" /></feature>": 1,
            "<feature name=\"RevMobPlugin\"><param name=\"android-package\" value=\"com.revmob.cordova.RevMobPlugin\" /></feature>": 0
        }
    }
},

JUST TRY