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 实现文件(图片)上传
  2. android 读取raw文件下文件内容
  3. android客户端利用sokcet通信和向Java服务端发请求,Java服务端把
  4. Android Layout布局文件里的android:layout_height等属性为什么

随机推荐

  1. Android(安卓)Audio代码分析13 - AudioTr
  2. Android中build target,minSdkVersion,targ
  3. Android小技巧&Android(安卓)Studio快捷
  4. Android(安卓)与H5交互心得(Base64图片)
  5. Android(安卓)SystemUI状态栏添加图标
  6. Android设置背景图像重复【整理自网络】
  7. Android(安卓)复制到剪切板功能
  8. Android猜牌小游戏(改进版)
  9. Android(安卓)开启或关闭WIFI实现
  10. Android(安卓)- 设定更改主Activity