plus.downloader.createDownload监听statechanged时,在红米电视上会出现一直卡在状态值为2中,但在模拟器上没出现过问题都能正常下载,换了下载地址也不行所以可以排除下载地址的问题
QCoder
- 发布:2023-06-09 12:13
- 更新:2023-06-16 09:02
- 阅读:601
plus.downloader.createDownload在红米电视上下载出现一直卡在状态值为2中,在模拟器上没出现过正常下载
分类:uni-app
2 个回复
QCoder (作者) - 专注前端领域
部分代码展示
——————————————————————————————————————
let options = {
method: "get",
filename: '_doc/update/'+ new Date().getTime() + '/'
};
let dtask = plus.downloader.createDownload(vm.url, options, function(d, status) {
plus.nativeUI.toast("downloader.status>>>>>>"+JSON.stringify(status))
});
dtask.start();
dtask.addEventListener("statechanged", function(task, status) {
plus.nativeUI.toast("statechanged.status>>>>>>"+JSON.stringify(status));
if (status === null) {} else if (status == 200) {
vm.downstatus = task.state;
plus.nativeUI.toast("task.state>>>>>>"+JSON.stringify(task.state));
//现在在红米电视上会出现一直卡在task.state状态值为2
switch (task.state) {
case 3: // 已接收到数据
if(task.downloadedSize < vm.downSize) return;
vm.downSize = task.downloadedSize;
if (task.totalSize) {
vm.fileSize = task.totalSize; //服务器须返回正确的content-length才会有长度
}
break;
case 4:
vm.installWgt(task.filename); // 安装wgt包
break;
}
} else {
//plus.nativeUI.closeWaiting();
plus.nativeUI.toast("下载出错");
vm.downing = false;
vm.downstatus = 0;
}
});
——————————————————————————————————————
QCoder (作者) - 专注前端领域
电视上不支持_doc,_downloads,_documents开头的路径,plus.io.convertLocalFileSystemURL('_doc')转了之后能正常下载,但是安装的时候又找不到文件路径了,现在陷入死胡同了
DCloud_Android_THB
电视为何不支持 _doc路径?
2023-06-19 10:41
QCoder (作者)
回复 DCloud_Android_THB: 安装找不到文件路径的问题暂时找到了没给permissionExternalStorage这个权限属性request属性添加always所有下载文件一直没写进存储里(这点我记得去年是默认给的今年就变了,搞得我好长时间才发现),但是之前确实用_doc这种路径电视下载的时候没有返回下载进度需要plus.io去获取就能正常下载,不知道是不是跟没给permissionExternalStorage权限也有关。
2023-06-20 10:38
DCloud_Android_THB
回复 QCoder: _doc会下载到sd卡的专属目录里面,并不需要额外的权限。
2023-06-20 12:53
2***@qq.com
回复 DCloud_Android_THB: 我已经复现了,部分电视机,下载文件确实需要permissionExternalStorage这个配置,不然就会下载失败
2024-07-10 21:38
DCloud_Android_THB
回复 2***@qq.com: 原来如此,看来有些系统烧录的权限进行修改了,这种系统下只能由开发者申请权限进行兼容了。
2024-07-11 11:03