简述

DownloadManger是android 2.3(API 9)开始提供的系统服务,用于处理长时间的下载操作。应用场景是客户端请求一个URL地址去下载一个目标文件。DownloadManger可以构建一个后台下载服务,在发生故障或连接更改、重新启动系统等情况后,处理HTTP连接并重试下载。

主要的接口和类:

1、内部类DownloadManager.Query,这个类可以用于过滤DownloadManager的请求。

2、内部类DownloadManager.Request,这个类包含请求一个新下载连接的必要信息。

3、公共方法enqueue,在队列中插入一个新的下载。当连接正常

,并且DownloadManager准备执行这个请求时,开始自动下载。返回结果是系统提供的唯一下载ID,这个ID可以用于与这个下载相关的回调。

4、公共方法query,用于查询下载信息。

5、公共方法remove,用于删除下载,如果下载中则取消下载。同时会删除下载文件和记录。

DownloadManager使用

String downLoadUrl = "";

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downLoadHtmlUrl));

//设置漫游条件下是否可以下载

request.setAllowedOverRoaming(false);

//在通知栏中显示,默认就是显示的

request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);

//设置通知标题

request.setTitle("通知标题,随意修改");

//设置通知标题message

request.setDescription("新版zip下载中...");

request.setVisibleInDownloadsUi(true);

//设置文件存放路径

File file = new File(Environment.getExternalStorageDirectory(), "appCode.zip");

request.setDestinationUri(Uri.fromFile(file));

// pathstr = file.getAbsolutePath();

if (downloadManager == null)

downloadManager =(DownloadManager) MainActivity.this.getSystemService(Context.DOWNLOAD_SERVICE);

//将下载请求加入下载队列,加入下载队列后会给该任务返回一个long型的id,通过该id可以取消任务,重启任务、获取下载的文件等等

if (downloadManager != null) {

downloadId = downloadManager.enqueue(request);

}

监听下载状态和进度

1.通过广播监听下载状态

//广播监听下载的各个状态

private BroadcastReceiver receiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

checkStatus();

}

};

//检查下载状态

private void checkStatus() {

DownloadManager.Query query = new DownloadManager.Query();

//通过下载的id查找

query.setFilterById(downloadId);

Cursor cursor = downloadManager.query(query);

if (cursor.moveToFirst()) {

int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));

switch (status) {

//下载暂停

case DownloadManager.STATUS_PAUSED:

break;

//下载延迟

case DownloadManager.STATUS_PENDING:

break;

//正在下载

case DownloadManager.STATUS_RUNNING:

break;

//下载完成

case DownloadManager.STATUS_SUCCESSFUL:

//下载完成

cursor.close();

break;

//下载失败

case DownloadManager.STATUS_FAILED:

cursor.close();

break;

}

}

}

2.注册广播

//注册广播监测下载情况

MainActivity.this.registerReceiver(receiver,

new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

android6.0原生brower_Android原生下载组件DownloadManager相关推荐

  1. android6.0原生brower_android原生browser分析(二)--界面篇

    我们先看一张浏览器的主界面,上面标示浏览器界面各部分对应的类,这里是以平板上的界面为例.给张图是为了给大家一个直观的感觉. BrowserActivity是整个应用的主界面,在onCreate中创建了 ...

  2. Android6.0 mtk去除原生相机设置中的选项

    Android去除原生相机设置中的录像中的一些选项,其中代码路径是: 6753_M\alps\vendor\mediatek\proprietary\packages\apps\Camera\src\ ...

  3. android6.0原生壁纸,安卓6.0原生壁纸 androidM6.0自带高清壁纸下载

    安卓系统6.0正式命名为Marshmallow棉花糖,有网友将安卓6.0系统自带壁纸提取出来,下面是androidM6.0自带高清壁纸下载资源. 安卓6.0原生壁纸 androidM6.0自带高清壁纸 ...

  4. 在Ubuntu Server14.04上编译Android6.0源码

    此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把An ...

  5. Ubuntu16.04编译android6.0.1源码记录

    目录 目录 一.安装环境 二.下载源码 1.下载repo 2.初始化repo 3.同步源代码 关于驱动 三.编译源码 四.导入源码到AS 五.刷入真机 六.修改源码 总结: 3.同步源代码 关于驱动 ...

  6. 【Android】app应用内版本更新升级(DownloadManager下载,适配Android6.0以上所有版本)

    目录 前言 一.实现思路 二.服务端接口 三.UI页面 三.工具类实现 1.检查版本号 2.下载apk 3.安装apk 4.实时更新下载进度 5.完整代码 三.外部使用 总结 前言 版本的升级和更新是 ...

  7. 在Eclipse中导入编译MTK平台Android6.0源码的原生Gallery2应用

    源码下载地址 由于工作的需要,需要在Eclipse中调试MTK平台Android6.0的原生Gallery2应用, 网上已经有很多类似的技术文章了,步骤都差不多, 但是MTK在google原生的Gal ...

  8. Google Nexus5在linux下刷原生安卓 android6.0

    之前将Nexus5刷成了MIUI系统,现在想体验一下安卓6.0,网上都是windows的教程,但如何在linux下刷机呢? 首先准备环境和工具: 1. 我的linux系统是lubuntu 15.10 ...

  9. iOS 原生级别后台下载详解

    怎样才能并发地下载一堆文件,并且能够在后台全部下载完成后再执行其他操作? 当然,这个问题其实很简单,解决方案也有很多.但我第一时间想到的是,目前是否存一个非常权威,非常流行.稳定可靠,并且是用 Swi ...

  10. 040几种原生手工封装UUID组件的方案

    040几种原生手工封装UUID组件的方案 结合时间戳和自定义进制方案处理生成UUID /*** 结合时间戳和自定义进制方案处理生成UUID* @param startsWord 定义起始字符,如:as ...

最新文章

  1. Document对象内容集合
  2. 巴蒂电信在泰米尔纳德邦推出4G Advanced网络
  3. Java 完美实现添加、读取和删除 Excel 批注
  4. dos下常用网络相关命令解释
  5. takePic and Videos
  6. jQuery之call()方法的使用
  7. layout布局_安卓最常见的几种布局
  8. 分布式训练PyTorch 源码解读
  9. 苹果safari关掉java_如何在Safari,Chrome,Firefox和系统范围内禁用Java | MOS86
  10. php nsdata,转换NSArray- JSON- NSData- PHP服务器- JSON表示
  11. AppCan入门教程
  12. 自建radius服务器,Radius服务器搭建
  13. Markdown公式编辑总结
  14. Multisim基础 桥式整流二极管电路
  15. 利用Linux查找重复文件(shell脚本)
  16. myeclipse破解补丁
  17. 【问题解决】Linux服务器免密信任 远程执行
  18. Gbit以太交换BCM56504
  19. AI带你省钱旅游!精准预测民宿房源价格! ⛵
  20. 重新理解创业——一个创业者的途中思考

热门文章

  1. 前端人脸识别--两张脸相似度
  2. ESP8266固件烧录软件flash_download_tools的安装过程
  3. Linux系统简介、安装RHEL7系统、RHEL7基本操作
  4. java FTPSClient 上传下载带证书的ftps服务器
  5. Emmagee和GT
  6. TNF5SLNO 华为OSN1800全新原包装4路STM-16,8路STM-4或8路STM-1光接口板
  7. Python:火山小视频-无水印视频-多线程-批量采集实现和完整代码
  8. 支付宝口碑收款码(详细解析)
  9. python3爬虫系列20之反爬需要登录的网站三种处理方式
  10. 学生免费获取PyCharm专业版