1

我一直在尝试在我的项目中使用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其他推荐使用<gap:plugin name="com.phonegap.plugins.example" />,但 Eclipse 发现此错误。

那么,我该如何解决呢?我是否正确调用了 HTML 中的方法?还是我错过了什么?

4

2 回答 2

1

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

于 2014-08-08T21:12:18.890 回答
0

您是使用“corodova add plugin xyz”之类的 CLI 添加插件还是手动将插件添加到 Eclipse 项目?如果您手动添加插件,那么当运行“cordova run android/ios”时,res 文件夹中的 config.xml 将被覆盖,因此出现上述错误。我找到了一个 hack/解决方案,因为我使用的是 revmob 插件,它不是基于 CLI 我们必须添加插件 maually。在你的项目/插件文件夹中有 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
        }
    }
},

试试看嘛

于 2014-05-01T20:01:46.887 回答