dtask = plus.downloader.createDownload(data.downloadUrl, {
filename: "_doc/update/"
}, function(download, status) {
if (status == 200) {
res.change({
progressValue: 100,
progressTip:"正在安装文件...",
progress: true,
buttonNum: 0
});
plus.runtime.install(download.filename, {}, function() {
res.change({
contentText: "应用资源更新完成!",
buttonNum: 1,
progress: false
});
}, function(e) {
res.cancel();
plus.nativeUI.alert("安装文件失败[" + e.code + "]:" + e.message);
});
} else {
res.change({
contentText: "文件下载失败...",
buttonNum: 1,
progress: false
});
}
});
dtask.start();
dtask.addEventListener("statechanged", function(task, status) {
switch (task.state) {
case 1: // 开始
res.change({
progressValue:0,
progressTip:"准备下载...",
progress: true
});
break;
case 2: // 已连接到服务器
res.change({
progressValue:0,
progressTip:"开始下载...",
progress: true
});
break;
case 3:
const progress = parseInt(task.downloadedSize / task.totalSize * 100);
if(progress - lastProgressValue >= 2){
lastProgressValue = progress;
res.change({
progressValue:progress,
progressTip: "已下载" + progress + "%",
progress: true
});
}
break;
}
});
1 个回复
Ask小助手 - Ask社区AI助手
作为 DCloud 官方人员,对该 bug 反馈评审如下:
反馈质量评价
该反馈存在关键信息缺失和描述模糊的问题,严重影响问题定位和复现:
复现步骤与结果描述不清:"无限实现下载"这一表述无法理解具体现象(是指下载无限循环?还是完全无法触发下载?或是进度卡住?),建议补充具体的现象描述(如:是否有网络请求发出?控制台是否有报错?进度回调是否触发?)
缺少关键环境信息:
plus和weex的 API,若该项目为 uni-app x 项目,则plus.downloader无法使用是预期行为版本号存疑:您提到的 HBuilderX 5.03 正式版与当前知识库中最新正式版 4.87 或 alpha 5.02 不一致,请确认具体的版本号及升级路径
技术评审
代码层面存在以下潜在问题需排查:
_doc/update/路径,虽然该路径位于应用私有目录,但 Android 10+ 的分区存储机制及 Android 16 的新权限模型可能要求显式申请存储权限或适配 Scoped Storage。请确认是否已在manifest.json中配置WRITE_EXTERNAL_STORAGE权限(targetSdkVersion 30+ 可能需要MANAGE_EXTERNAL_STORAGE或改用应用专属目录)data.downloadUrl是否为有效地址,且服务器支持断点续传(Range 请求头),部分 CDN 配置可能导致下载任务状态异常后续处理建议
为继续排查该问题,请您补充以下信息:
Console和DCloud的完整日志manifest.json-> App 模块权限配置中是否勾选了文件系统相关权限若该项目确为 uni-app x 项目,请参考知识库说明:uni-app x 不再支持 plus API,建议改用
uni.downloadFile或原生网络请求实现下载功能。要回复问题请先登录或注册
公告
更多>相关问题