android6.0原生brower_Android原生下载组件DownloadManager
简述
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相关推荐
- android6.0原生brower_android原生browser分析(二)--界面篇
我们先看一张浏览器的主界面,上面标示浏览器界面各部分对应的类,这里是以平板上的界面为例.给张图是为了给大家一个直观的感觉. BrowserActivity是整个应用的主界面,在onCreate中创建了 ...
- Android6.0 mtk去除原生相机设置中的选项
Android去除原生相机设置中的录像中的一些选项,其中代码路径是: 6753_M\alps\vendor\mediatek\proprietary\packages\apps\Camera\src\ ...
- android6.0原生壁纸,安卓6.0原生壁纸 androidM6.0自带高清壁纸下载
安卓系统6.0正式命名为Marshmallow棉花糖,有网友将安卓6.0系统自带壁纸提取出来,下面是androidM6.0自带高清壁纸下载资源. 安卓6.0原生壁纸 androidM6.0自带高清壁纸 ...
- 在Ubuntu Server14.04上编译Android6.0源码
此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把An ...
- Ubuntu16.04编译android6.0.1源码记录
目录 目录 一.安装环境 二.下载源码 1.下载repo 2.初始化repo 3.同步源代码 关于驱动 三.编译源码 四.导入源码到AS 五.刷入真机 六.修改源码 总结: 3.同步源代码 关于驱动 ...
- 【Android】app应用内版本更新升级(DownloadManager下载,适配Android6.0以上所有版本)
目录 前言 一.实现思路 二.服务端接口 三.UI页面 三.工具类实现 1.检查版本号 2.下载apk 3.安装apk 4.实时更新下载进度 5.完整代码 三.外部使用 总结 前言 版本的升级和更新是 ...
- 在Eclipse中导入编译MTK平台Android6.0源码的原生Gallery2应用
源码下载地址 由于工作的需要,需要在Eclipse中调试MTK平台Android6.0的原生Gallery2应用, 网上已经有很多类似的技术文章了,步骤都差不多, 但是MTK在google原生的Gal ...
- Google Nexus5在linux下刷原生安卓 android6.0
之前将Nexus5刷成了MIUI系统,现在想体验一下安卓6.0,网上都是windows的教程,但如何在linux下刷机呢? 首先准备环境和工具: 1. 我的linux系统是lubuntu 15.10 ...
- iOS 原生级别后台下载详解
怎样才能并发地下载一堆文件,并且能够在后台全部下载完成后再执行其他操作? 当然,这个问题其实很简单,解决方案也有很多.但我第一时间想到的是,目前是否存一个非常权威,非常流行.稳定可靠,并且是用 Swi ...
- 040几种原生手工封装UUID组件的方案
040几种原生手工封装UUID组件的方案 结合时间戳和自定义进制方案处理生成UUID /*** 结合时间戳和自定义进制方案处理生成UUID* @param startsWord 定义起始字符,如:as ...
最新文章
- 部署可扩展的目标检测管道:推理过程(下)
- ios学习笔记-数据持久化
- python中 getnode用法_node.js 爬虫入门总结
- 第三十一期:大数据分析师学习入门,10个数据可视化技巧
- Android官方开发文档Training系列课程中文版:后台服务之IntentService的使用
- oppo计算机的夜间模式,oppo夜间模式如何打开
- UI标签库专题四:JEECG智能开发平台 Upload(上传标签)
- 如何看当前windows是utf8还是gbk_职场中的OKR如何“好好说话”
- android app攻击与防范论文,基于Android平台的应用程序安全保护研究与应用
- PXE+Kickstart无人值守安装CentOS 7出现DHCP故障解决报告
- 关于Excel的查询,可以通过格式查询(比如查找指定颜色的单元格)。
- 《Android 应用案例开发大全(第3版)》——第2章,第2.8节壁纸中的着色器开发...
- 教你如何创建unity3d多个定时器,以及定时器的其他操作
- php微信公众号项目域名,微信公众号里“JS接口域名”实现分享功能
- 软考初级信息处理技术员(一)
- 三星固态驱动安装失败_三星固态硬盘安装不了Win10无法启动解决方案
- win7nodejs压缩包配置环境变量
- 数构与算法 | 什么是大 O 表示算法时间复杂度
- ICP经营许可证与ICP备案有什么区别?
- Xilinx AXI GPIO学习笔记以及问题点
热门文章
- 【解决】简单有效的使用lodop打印小票功能
- 中望3d快捷键命令大全_autocad2014快捷键命令大全
- 【MATLAB生信分析】MATLAB生物信息分析工具箱(二)
- 获取手机屏幕的宽高 html,js获取手机屏幕宽度、高度
- Python使用pyserial实现串口收发
- Silvaco Vcsel example01 解析
- 【Python爬虫】获取全国客运列车车次及起讫站点位置信息
- 迪普科技负载均衡助力金关工程(二期)核心业务交付
- mysql innodb_data_file_path_应急预案:专有云V3环境中RDS MySQL5.7实例修改innodb_temp_data_file_path参数的方法...
- html表格中的字体上下居中 css,css 文字垂直居中实现方法总结