我正在使用Cordova / Phonegap编写一个小程序,它基本上从服务器下载文件并放在本地SD卡中。这个应用程序现在只能在Android上运行。我有这个函数,它使用来自cordova库的fileTransfer,它从服务器下载所需的文件。
this.downloadFile=function(){
var filePath = '';
var remoteFile = config.url + 'api_download';
var localFileName = this.constants.currentFileName;
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
fileSystem.root.getFile(localFileName, {create: true, exclusive: false}, function(fileEntry) {
var localPath = fileEntry.fullPath;
var fullPath = fileEntry.fullPath
var metadata = fileEntry.getMetadata();
if (device.platform === "Android" && localPath.indexOf("file://") === 0) {
localPath = localPath.substring(7);
}
filePath = localPath;
var ft = new FileTransfer();
ft.download(remoteFile,
localPath, function(entry) {
// Now file is downloaded, we need the mimetype
var type = returnMimeType(fullPath);
if(type != ''){
CDV.WEBINTENT.startActivity({
action: CDV.WEBINTENT.ACTION_VIEW,
url: fullPath,
type: type},
function() {},
function() {console.log('Failed to open URL via Android Intent');}
);
console.log("Local Path is :"); console.log(fullPath);
}
}, fail);
}, fail);
}, fail);
}
这很好并且完全按预期工作,但用户不知道文件是否正在下载。我没办法通知这个,所以我想知道我是否可以使用Android的默认下载管理器而不是这个方法。或者我可以以某种方式显示下载的进度,它也将解决问题。
谢谢!
答案 0 :(得分:0)
我在下载xml文件时遇到了同样的问题。解决了这个简单的脚本:Spin.js下载开始时,模糊屏幕并启动微调器,在结束时停止微调器:)
答案 1 :(得分:0)
使用此插件访问android DownloadManager
https://github.com/sgrebnov/cordova-plugin-background-download
我在我的cordova应用程序中使用它并且工作正常。