本文的合集已经编著成书,高级Android开发强化实战,欢迎各位读友的建议和指导。
在京东即可购买:https://item.jd.com/12385680.html

DownloadManager是Android的基础类, 用于下载文件, 完成自动更新的功能.
使用方式

DownloadUtil downloadUtil = new DownloadUtil(context);downloadUtil.download();

代码

package me.chunyu.model.utils;import android.annotation.TargetApi;import android.app.DownloadManager;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.net.Uri;import android.webkit.MimeTypeMap;/** * 下载类, 默认下载春雨医生APK, 也可以下载其他APK. * 存储位置: /sdcard/download/filename * 

* Created by C.L.Wang on 15/7/27. */@TargetApi(11)public class DownloadUtil { private static final String CHUNYU_DOWNLOAD_URL = "http://www.chunyuyisheng.com/download/chunyu/latest/"; private static final String APK_TYPE = "application/vnd.android.package-archive"; private static final String DEFAULT_FILE_NAME = "chunyudoctor.apk"; private static final String DEFAULT_TITLE = "春雨医生"; private Context mContext; // 下载进行 private String mUrl; // URL地址 private String mFileName; // 文件名 private String mTitle; // 通知栏标题 private DownloadManager mDownloadManager; // 下载管理器 private long mDownloadId; // 下载ID // 下载完成的接收器 private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { long downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); if (downloadId == mDownloadId) { installApp(mDownloadId); destroyArgs(); } } }; /** * 默认构造器, 下载春雨医生APK * * @param context 上下文 */ public DownloadUtil(Context context) { this(context, CHUNYU_DOWNLOAD_URL, DEFAULT_FILE_NAME, DEFAULT_TITLE); } /** * 参数构造器, 下载其他文件 * * @param context 活动 * @param url URL * @param fileName 存储文件名 * @param title 通知栏标题 */ public DownloadUtil(Context context, String url, String fileName, String title) { mContext = context; mUrl = url; mFileName = fileName; mTitle = title; initArgs(); } /** * 下载文件 */ public void download() { // 设置下载Url Uri resource = Uri.parse(mUrl); DownloadManager.Request request = new DownloadManager.Request(resource); // 设置文件类型 MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton(); String mimeString = mimeTypeMap.getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(mUrl)); request.setMimeType(mimeString); // 下载完成时在进度条提示 request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); // 存储sdcard目录的download文件夹 request.setDestinationInExternalPublicDir("/download/", mFileName); request.setTitle(mTitle); // 开始下载 mDownloadId = mDownloadManager.enqueue(request); } // 初始化 private void initArgs() { mDownloadManager = (DownloadManager) mContext.getSystemService((Context.DOWNLOAD_SERVICE)); mContext.registerReceiver(mReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); } // 析构 private void destroyArgs() { mContext.unregisterReceiver(mReceiver); } // 安装App private void installApp(long downloadId) { Intent install = new Intent(Intent.ACTION_VIEW); Uri downloadFileUri = mDownloadManager.getUriForDownloadedFile(downloadId); install.setDataAndType(downloadFileUri, APK_TYPE); install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(install); }}

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. android 开机动画的制作
  6. Android数据篇(二)
  7. Android程序框架
  8. nfs: server 192.168.0.3 not responding, still trying
  9. android NDK学习篇5之hello-jni——jni中头文件的自动生成

随机推荐

  1. android studio 遇到的问题汇总
  2. Android 把Layout变成图片
  3. android 中 CheckBox 复选框操作
  4. Android之Broadcast, BroadcastReceiver(
  5. android之ListView和adapter配合显示图片
  6. Android学习笔记----Android简单有效的闪
  7. Android顶部用tabLayout和viewPager显示
  8. android 报错问题解析
  9. android SDK4.0源代码下载
  10. android 异步下载图片