Android 使用 DowanloadManager 实现下载并获取下载进度实例代码

实现代码:
package com.koolsee.gallery;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.view.View.OnTouchListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.koolsee.gallery.adapter.RecommendAdapter;
import com.koolsee.gallery.model.Recommend;
import com.koolsee.gallery.widget.GalleryFlow;
/**
* 首页
*
* @author zengxiaotao
*/
public class testActivity extends Activity {
private DownloadManager dowanloadmanager = null;
private DownloadChangeObserver downloadObserver;
private long lastDownloadId = 0;
public static final Uri CONTENT_URI = Uri.parse("content://downloads/my_downloads");
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
String serviceString = Context.DOWNLOAD_SERVICE;
dowanloadmanager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Uri uri = Uri.parse("http://commonsware.com/misc/test.mp4");
Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS).mkdir();
lastDownloadId = dowanloadmanager.enqueue(new DownloadManager.Request(uri)
.setAllowedNetworkTypes(
DownloadManager.Request.NETWORK_MOBILE
| DownloadManager.Request.NETWORK_WIFI)
.setAllowedOverRoaming(false)
.setDestinationInExternalPublicDir(
Environment.DIRECTORY_DOWNLOADS, "test.mp4"));
registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
downloadObserver = new DownloadChangeObserver(null);
getContentResolver().registerContentObserver(CONTENT_URI, true, downloadObserver);
}
class DownloadChangeObserver extends ContentObserver {
public DownloadChangeObserver(Handler handler) {
super(handler);
// TODO Auto-generated constructor stub
}
@Override
public void onChange(boolean selfChange) {
queryDownloadStatus();
}
}
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//这里可以取得下载的id,这样就可以知道哪个文件下载完成了。适用与多个下载任务的监听
Log.v("tag", "" + intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0));
queryDownloadStatus();
}
};
private void queryDownloadStatus() {
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(lastDownloadId);
Cursor c = dowanloadmanager.query(query);
if(c != null && c.moveToFirst()) {
int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
int reasonIdx = c.getColumnIndex(DownloadManager.COLUMN_REASON);
int titleIdx = c.getColumnIndex(DownloadManager.COLUMN_TITLE);
int fileSizeIdx =
c.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);
int bytesDLIdx =
c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR);
String title = c.getString(titleIdx);
int fileSize = c.getInt(fileSizeIdx);
int bytesDL = c.getInt(bytesDLIdx);
// Translate the pause reason to friendly text.
int reason = c.getInt(reasonIdx);
StringBuilder sb = new StringBuilder();
sb.append(title).append("\n");
sb.append("Downloaded ").append(bytesDL).append(" / " ).append(fileSize);
// Display the status
Log.d("tag", sb.toString());
switch(status) {
case DownloadManager.STATUS_PAUSED:
Log.v("tag", "STATUS_PAUSED");
case DownloadManager.STATUS_PENDING:
Log.v("tag", "STATUS_PENDING");
case DownloadManager.STATUS_RUNNING:
// 正在下载,不做任何事情
Log.v("tag", "STATUS_RUNNING");
break;
case DownloadManager.STATUS_SUCCESSFUL:
// 完成
Log.v("tag", "下载完成");
// dowanloadmanager.remove(lastDownloadId);
break;
case DownloadManager.STATUS_FAILED:
// 清除已下载的内容,重新下载
Log.v("tag", "STATUS_FAILED");
dowanloadmanager.remove(lastDownloadId);
break;
}
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(receiver);
getContentResolver().unregisterContentObserver(downloadObserver);
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# 使用
# DowanloadManager
# DowanloadManager下载进度
# android中DownloadManager实现版本更新
# 监听下载进度实例
# Android中使用AsyncTask做下载进度条实例代码
# Android Retrofit文件下载进度显示问题的解决方法
# Android实现Service下载文件
# Notification显示下载进度的示例
# Android之ProgressBar即时显示下载进度详解
# Android实现文件下载进度显示功能
# Android文件下载进度条的实现代码
# Android下载进度监听和通知的处理详解
# 成了
# 多个
# 希望能
# 不做
# 谢谢大家
# 首页
# 就可以
# 下载完
# 重新下载
# 下载完成
# zengxiaotao
# public
# extends
# author
# null
相关文章:
如何在阿里云ECS服务器部署织梦CMS网站?
建站之星如何一键生成手机站?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
jQuery 常见小例汇总
建站主机空间推荐 高性价比配置与快速部署方案解析
如何彻底删除建站之星生成的Banner?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
官网网站制作腾讯审核要多久,联想路由器newifi官网
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
建站之星如何实现网站加密操作?
如何在IIS服务器上快速部署高效网站?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
浅谈Javascript中的Label语句
常州企业网站制作公司,全国继续教育网怎么登录?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
平台云上自主建站:模板化设计与智能工具打造高效网站
SQL查询语句优化的实用方法总结
Swift中switch语句区间和元组模式匹配
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何用y主机助手快速搭建网站?
手机网站制作与建设方案,手机网站如何建设?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
高端云建站费用究竟需要多少预算?
小型网站建站如何选择虚拟主机?
如何快速生成橙子建站落地页链接?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
如何获取上海专业网站定制建站电话?
活动邀请函制作网站有哪些,活动邀请函文案?
开封网站制作公司,网络用语开封是什么意思?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
建站主机默认首页配置指南:核心功能与访问路径优化
制作国外网站的软件,国外有哪些比较优质的网站推荐?
全景视频制作网站有哪些,全景图怎么做成网页?
建站之星北京办公室:智能建站系统与小程序生成方案解析
如何快速上传自定义模板至建站之星?
网页设计网站制作软件,microsoft office哪个可以创建网页?
网站制作说明怎么写,简述网页设计的流程并说明原因?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
股票网站制作软件,网上股票怎么开户?
宝塔Windows建站如何避免显示默认IIS页面?
如何通过西部数码建站助手快速创建专业网站?
专业商城网站制作公司有哪些,pi商城官网是哪个?
购物网站制作公司有哪些,哪个购物网站比较好?
动图在线制作网站有哪些,滑动动图图集怎么做?
建站主机与虚拟主机有何区别?如何选择最优方案?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
如何快速查询域名建站关键信息?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
*请认真填写需求信息,我们会在24小时内与您取得联系。