一直以来都是用downloadManager进行apk下载的,然后进行更新安装。昨天客服反馈有部分用户更新失败,经过代码研究和网络搜索,推断可能的原因是部分国产机型在系统修改的国产中,对downloadManager进行了阉割!!!(真快被坑死了)

上方案前的代码,绝大部分机型没问题,vivoX6,Vivo7Plus可能会出现这个问题(用户反馈的机型,但是找不到测试机,所以是可能。。。)

上之前的代码

 /*** 下载新版本** @param context* @param url*/public static void downLoadAPK(Context context, String url, File desFile) {try {String serviceString = Context.DOWNLOAD_SERVICE;final DownloadManager downloadManager = (DownloadManager) context.getSystemService(serviceString);Uri uri = Uri.parse(url);DownloadManager.Request request = new DownloadManager.Request(uri);request.allowScanningByMediaScanner();request.setVisibleInDownloadsUi(true);request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);request.setMimeType("application/vnd.android.package-archive");if (desFile.exists()) {desFile.delete();}request.setDestinationInExternalPublicDir("mydownload", "NewVersion.apk");AppConfig.DownLoadRefrence = downloadManager.enqueue(request);} catch (Exception exception) {ToastUtil.showToast(context, "更新失败");}}

出现异常之后,提示用户更新失败。

然后,用户一直更新失败,反馈回来后,产品要求出解决方案,头疼!!!!!!






经过苦思冥想,终于

解决方案

思路,部分机型问题,既然系统的自带下载更新不能用,就另辟蹊径,让这部分用户去浏览器下载

 /*** 下载新版本** @param context* @param url*/public void downLoadAPK(Context context, String url, File desFile, String errorMsg) {try {//正常下载final DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);Uri uri = Uri.parse(url);DownloadManager.Request request = new DownloadManager.Request(uri);request.allowScanningByMediaScanner();request.setVisibleInDownloadsUi(true);request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);request.setMimeType("application/vnd.android.package-archive");AppConfig.IS_DOWNLOADING = true;if (desFile.exists()) {desFile.delete();}request.setDestinationInExternalPublicDir("mydownload", "NewVersion.apk");AppConfig.DownLoadRefrence = downloadManager.enqueue(request);} catch (Exception exception) {//非正常情况if (!TextUtils.isEmpty(errorMsg)) {//弹出弹出提示用户,如果更新失败,请联系客服CommonDialog commonDialog = new CommonDialog(this);commonDialog.setTitle("提示");commonDialog.setContent(errorMsg);commonDialog.showSingleButton(true);commonDialog.setCanceledOnTouchOutside(false);commonDialog.show();}//防止崩溃,再抓一下try {//携带下载链接跳转到浏览器if (!TextUtils.isEmpty(url) && url.contains("http")) {AppConfig.IS_DOWNLOADING = true;Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse(url);intent.setData(content_url);startActivity(intent);}} catch (Exception e) {//异常处理}}}

以上就是产品出现的问题了,最近出现很多莫名其妙的用户反馈,就知道个手机号和手机型号,产品狗也不懂,直接让解决,很崩溃的!!!

使用DownloadManager进行更新下载,部分机型下载失败解决方案相关推荐

  1. pytorch gpu版本的最全安装教程,含环境配置、CUDA(百度云下载)安装程序失败解决方案

    看过我cpu版本的pytorch小白安装教程CPU版pytorch小白教程应该已经会设置清华源了,这里不再叙述,gpu版本的pytorch会默认以清华镜像源来下载,速度不用担心. 请关闭杀毒软件 尤其 ...

  2. Downloadmanager实现app实现的升级下载使用

    1.app升级下载现在不推荐使用downloadmanager下载: 原因有下面的几个方面: (1)三星note系列部分手机需要手动打开这个权限才能用这个功能,而有些国产手机更加nb了直接个阉割了(d ...

  3. GameFramework:资源热更代码分析,检查版本信息,下载版本文件,校验版本文件,得到更新文件数量,下载文件,TaskPool

    资源下载流程图 流程跳转的日志 版本信息-版本检测-下载版本列表-下载散文件代码分析 进入ProcedureCheckVersion.OnEnter流程,进行task请求,userData为StarF ...

  4. 【PC工具】200412更新百度网盘下载工具——最终最简单百度网盘下载方法及注意事项...

    今天有朋友在群里问会员账号,上次好像说过,这种公用的会员账号基本下载量都超了,同样也限速,所以这种账号一般都用来找资源. 百度网盘这个题材也来回来去发过好几个工具了,太麻烦不说,老这么道高一尺魔高一丈 ...

  5. 【PC工具】200324更新百度网盘下载工具——最新百度网盘下载工具使用方法及注意事项...

    今天(200324)更新一个大牛的个人项目pdown,大家可以收藏一下备用(为啥是备用呢,细心的小伙伴应该发现我把标题中的高速两个字去掉了). 先发项目地址:没错还是那个神奇的网站(大神奇人聚集的地方 ...

  6. uni-app开发的APP项目上线后,登录后自动检测更新,点击下载并安装,可手动检测版本更新,实现扫码下载功能

    先说实现逻辑:我选择原生app-云打包,打包时设置好版本号,打包后上传到后台管理的app版本管理中:页面在App.vue中加载时storage设置当前的app版本号,首页加载出来时调用后台管理上传的最 ...

  7. Android Studio App开发之下载管理器DownloadManager中显示、轮询下载进度、利用POST上传文件讲解及实战(附源码)

    运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一.在通知栏显示下载进度 利用GET方式读取数据有很多缺点比如1:无法端点续传 一旦中途失败只能重新获取 2:不是真正意义上的下载操作 无法设置参 ...

  8. MacOS更新提示“安装需要下载重要内容。该内容此时无法下载。请稍后再试。”解决方法

    MacOS更新提示"安装需要下载重要内容.该内容此时无法下载.请稍后再试."解决方法 原因:下载时中断了,重新下载就会提示该错误. 解决方法:把临时下载文件删除就好 解决过程: 打 ...

  9. MacOS更新提示安装需要下载重要内容。该内容此时无法下载。请稍后再试

    MacOS更新提示安装需要下载重要内容.该内容此时无法下载.请稍后再试 解决办法: 把家里WIFI 电源关闭,重新启动下路由器.

  10. 【华硕 Armoury crate 中 GameVisual 更新色彩配置文件 GameVisual下载失败服务器响应超时问题解决】

    华硕 Armoury crate 中 GameVisual 更新色彩配置文件 GameVisual下载失败 服务器响应超时 问题解决 问题描述 解决方法 获取显卡(连接屏幕的那张显卡)硬件ID 获取监 ...

最新文章

  1. 绝地服务器维护7月5日,绝地求生7月5日更新到几点 吃鸡更新维护公告
  2. commons-lang常用工具类StringEscapeUtils使用--转
  3. [算法] 举一反三之n重复数组中找唯一m重复异类数
  4. 南通工学院计算机97级,2021年南通理工学院录取结果查询网址入口及录取结果公布时间...
  5. 漫话:如何给女朋友解释为什么计算机从0开始计数,而不是从1开始?
  6. schedule php,PHP Laravel定时任务Schedule【干货】
  7. ASP.NET-第一天-数据库知识
  8. 小狗拉菲扫地机器人_小狗电器:2018年最值得入手的五款扫地机器人
  9. JavaWeb:下载文件
  10. Linux环境下配置虚拟ip,方法1:新增多个子网卡,每个子网卡有独立的配置文件
  11. 论文编辑软件(论文抽屉) v5.5.0Word版
  12. 单片机课设中期报告_本科毕业设计中期检查报告.doc
  13. 国人自研开源项目,一款简单易用的 GitLab 替代品
  14. Mac最新版书籍分享
  15. java多线程 注意事项_多线程使用及注意事项
  16. 格式工厂找不到qlv文件无法添加qlv文件 怎么办 解决方法
  17. 安卓 app 本地升级下载后自动安装(小米手机安装包解析失败问题)
  18. JVM之记忆集和卡表
  19. Sunflower——Google官方的Jetpack学习项目笔记(Java版)
  20. Java开源Web开发框架

热门文章

  1. 一个简单的考勤签到程序
  2. xxxxxxxxxxxxxxxxx
  3. java递归查询分类及分类下所有子分类
  4. trt-tl10ac01b220_android 7.0_emui 5.1,华为畅享7 plus固件TRT-TL10C01B201_Android 7.0_EMUI 5.1强刷救砖包...
  5. 我是如何投资数字货币的(1.2版)
  6. springboot自带的线程池ThreadPoolTaskExecutor、ThreadPoolTaskScheduler的深入应用——异步任务监听回调,任务中断案例
  7. crt和zoc7的快捷键记录
  8. matlab的积分函数
  9. 转载招聘信息及求职建议
  10. IntelliJ IDEA-ssm使用IDEA导入一个Maven风格的ssm项目