2

Android Downloader プラグインを必要とする phonegap アプリケーションを開発しています: https://github.com/phonegap/phonegap-plugins/tree/master/Android/Downloader

残念ながら、最新の cordova (2.2) を使用すると失敗するようです。コードのアップグレードに数時間費やしました。

downloader.js

cordova.define(
    "cordova/plugin/downloader",
    function(require, exports, module)
    {
        var exec = require("cordova/exec");

        var Downloader = function() {};

        Downloader.prototype.downloadFile = function(fileUrl, params, successCallback, failureCallback)
        {
            // Make params hash optional.
            if (!failureCallback) win = params;

            return exec(
                successCallback,
                failureCallback,
                'Downloader', 
                'downloadFile',
                [fileUrl, params]);
        };

        var downloader = new Downloader();
        module.exports = downloader;
    }
);

Downloader.java

package org.apache.cordova.plugins.Downloader;

import org.apache.cordova.api.CordovaInterface;
import org.apache.cordova.api.Plugin;
import org.apache.cordova.api.PluginResult;
[more imports...]

public class Downloader extends Plugin 
{
etc.

config.xml

<plugins>
<plugin name="App" value="org.apache.cordova.App"/>
[...]
<plugin name="Downloader" value="org.apache.cordova.plugins.Downloader"/>
</plugins>

HTML JS 呼び出し

downloader = cordova.require("cordova/plugin/downloader");

downloader.downloadFile(...

アプリは Eclipse で正常にコンパイルされますが、ダウンローダー コードを実行すると、ALERT クラスが見つかりません。logcat は次のように述べています。

W/System.err(4035): java.lang.ClassNotFoundException: org.apache.cordova.plugins.Downloader ... プラグイン org.apache.cordova.plugins.Downloader の追加中にエラーが発生しました。

問題を解決するのを手伝ってもらえますか?

4

1 に答える 1

1

あなたが行ったのではなく、jsファイルにいくつかの変更を加えましたが、すべて正常に機能しています。

function Downloader() {}

Downloader.prototype.downloadFile = function(fileUrl, params, win, fail) {  
    //Make params hash optional.
    if (!fail) win = params;
    PhoneGap.exec(win, fail, "Downloader", "downloadFile", [fileUrl, params]);
};

   PhoneGap.addConstructor(function() {
    PhoneGap.addPlugin("downloader", new Downloader());
    PluginManager.addService("Downloader", "com.phonegap.plugins.downloader.Downloader");
});

if(!window.plugins) {
    window.plugins = {};
}   
if (!window.plugins.downloader) {
    window.plugins.downloader = new Downloader();
}
于 2013-03-17T18:14:15.217 に答える