Android 使用DownloadManager下载apk失败问题

一、问题

使用DownloadManager下载App失败,以往都是好好的,代码也没有动过,怎么就下载失败了呢?

后端从http更换为https

对DownloadManager状态的记录:

打印日志

结果:

E/zlq: bytesDownload:0

E/zlq: descrition:

E/zlq: id:178

E/zlq: localUri:null

E/zlq: mimeType:application/vnd.android.package-archive

E/zlq: title:

E/zlq: status:491

E/zlq: url:https://host/static/app/download/xxx.apk

E/zlq: reason:placeholder

E/zlq: totalSize:-1

最后得到:status:491,既

/**

        * This download has completed with an error.

        * Warning: there will be other status values that indicate errors in

        * the future. Use isStatusError() to capture the entire category.

        */

        public static final int STATUS_UNKNOWN_ERROR = 491;

未知的错误状态,坑了~

二、解决

①怀疑是DownloadManager不支持https

查看源码:

scheme不是http、https才会抛异常,说明DownloadManager已经可以很好的支持https的下载方式了。

从android4.0开始DownloadManager就已经可以支持https了;看过一篇帖子将DownloadManager改成支持https的方式,不过sdk的版本已经是2.x的了,https://stackoverflow.com/questions/8106155/android-downloadmanager-and-ssl-https,放弃。

②既然两种方式都支持,而且多个版本迭代以来都未发生过这样的问题,所以一直就抱着怀疑后端存在处理的问题。

果然后端下发的url未http的,当我们访问http的链接时,后端做了一个重定向,既重新转成https的方式,导致DownloadManager无法正常下载了。

三、最后

在使用DownloadManager做下载时需要注意,直接给物理地址,不要有任何的重定向,否则无法正常下载。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,374评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,292评论 25 709
  • 一. DownloadManager简单介绍 DownloadManger是android 2.3(api lev...
    jiaming_阅读 47,355评论 9 47
  • 故事有很多种,有的情节跌宕,爱恨分明,有的则是缓如溪水,朴实真切。前者让人陶醉于江湖情仇的纷繁复杂,后者让人沉静在...
    昭阳2017阅读 4,714评论 5 13
  • 知道你喜欢 我乐观的样子 知道你喜欢 我自在逍遥的样子 知道你喜欢 …… 忧郁的样子 才是我想你的样子
    亦柔阅读 1,638评论 0 0