全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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小时内与您取得联系。