我编写了一个 Cordova 插件来下载文件并将其保存在数据文件夹中。除了返回值外,一切正常。我想显示一个进度条并需要获取当前进度。这是我的代码中的相关部分:
while ((readed = is.read(buffer)) > 0) {
fos.write(buffer, 0, readed);
totalReaded += readed;
int newProgress = (int) (totalReaded*100/fileSize);
if (newProgress != progress) {
progress = newProgress;
PluginResult res = new PluginResult(PluginResult.Status.OK, progress);
res.setKeepCallback(true);
callbackContext.sendPluginResult(res);
}
}
我的 JavaScript:
downloader.prototype.writeFile = function (downloaderSuccess, downloaderFailure, options) {
cordova.exec(downloaderSuccess, downloaderFailure, "downloader", "writeFile", options);
};
function downloaderSuccess(progress) {
WL.Logger.debug("Result: "+progress)
}
function downloaderFailure(error) {
WL.Logger.error("Error: "+error);
}
发生的情况是只有在文件下载后才会输出进度。如果我将 PluginResult.Status 设置为 NO_RESULT,它根本不会输出任何内容。