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 * <p/> * 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. Android视频教学下载大全(VeryCD上)
  2. Android(安卓)相关
  3. 2013.6.18 Android(安卓)SDK和最新ADT下载地址
  4. 1、Android(安卓)Studio的安装及环境配置
  5. android中下载文件到sdcard和进度条小结
  6. Android书籍分享
  7. Android(安卓)Studio之软件安装教程
  8. Android开发平台Android(安卓)Studio学习之一(下载及安装)
  9. 分享17个老罗Android开发视频教程(免费下载)

随机推荐

  1. android 通知提醒
  2. Android(安卓)必须知道2018年流行的框架
  3. 打开Android Studio报错,Unable to create
  4. android 读取DDMS里的文件时打不开,解决方
  5. 修改ProgressBar的进度条颜色
  6. android 禁止横屏时输入法全屏
  7. android 使用xml定义自己的View
  8. android 页面布局时定义控件ID时@id/XX和
  9. Android Application Fundamentals——An
  10. Android中字体的处理