DownloadManager是系统开放给第三方应用使用的类,包含两个静态内部类DownloadManager.Query和DownloadManager.Request。DownloadManager.Request用来请求一个下载,DownloadManager.Query用来查询下载信息。具体使用代码如下:

 package com.example.administrator.mystudent.downloadManager;

 import android.app.Activity;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast; import com.example.administrator.mystudent.R; import java.util.HashMap;
import java.util.Map; public class DownLoadActivity extends Activity {
private Button starButton;
private Button stopButton;
private Button dirButton;
private TextView infoText; private DownloadManager downloader;
private Uri uri;
private long reference; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_down_load); initView();
} private void initView() {
starButton = (Button) findViewById(R.id.star);
stopButton = (Button) findViewById(R.id.stop);
dirButton = (Button) findViewById(R.id.dir);
infoText= (TextView) findViewById(R.id.myText); starButton.setOnClickListener(new myButtonListener());
stopButton.setOnClickListener(new myButtonListener());
dirButton.setOnClickListener(new myButtonListener());
} class myButtonListener implements View.OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.star: {
//执行下载任务
downLoadManager();
}
break;
case R.id.stop: {
//停止下载
downloader.remove(reference);
}
break;
case R.id.dir: {
//获取存放地址
Map sDir=getMyFilesDir();
infoText.setText("downid:"+sDir.get("downid")
+"title:"+sDir.get("title")
+"statuss:"+sDir.get("statuss")
+"address:"+sDir.get("address")
+"status:"+sDir.get("status")
);
}
break;
}
}
} /**
* 获取下载的文件存贮路径
* @return 文件路径
*/
private Map getMyFilesDir() {
Map<String, String> map = null;
//创建查询对象
DownloadManager.Query query=new DownloadManager.Query();
//根据任务编号查询下载任务信息
query.setFilterById(reference); Cursor cursor=downloader.query(query);
while (cursor.moveToNext()){
String downId= cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_ID)); //下载文件的id
String title = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_TITLE)); //下载文件的题目
String address = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)); //下载的地址
String statuss = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)); //状态
String size= cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)); //大小
String sizeTotal = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); //总大小 map = new HashMap<String, String>();
map.put("downid", downId);
map.put("title", title);
map.put("statuss", statuss);
map.put("address", address);
map.put("status", sizeTotal+":"+size);
}
cursor.close();
return map;
} /**
* DownloadManager的使用
*/
private void downLoadManager() {
//创建downLoadManager的管理器
downloader = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
//创建一个URI
// uri = Uri.parse("http://biz.10039shop.com/download/leyt/leyt.apk");
uri = Uri.parse("http://p1.ifengimg.com/a/2017_09/75dd25f878e8715_size66_w600_h363.jpg");
//封装一个request对象
DownloadManager.Request request = new DownloadManager.Request(uri);
//设置文件必须在WIFI下下载
request.setAllowedNetworkTypes(request.NETWORK_WIFI); //用于设置下载时时候在状态栏显示通知信息
request.setNotificationVisibility(request.VISIBILITY_VISIBLE);
//设置通知栏标题
request.setTitle("百度下载");
//设置Notification的message信息
request.setDescription("图片正在下载");
//用于设置漫游状态下是否可以下载
request.setAllowedOverRoaming(false);
//设置文件存放目录
request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS, "myDownLoad"); //发送request请求并返回一个下载ID(开始下载了)
reference = downloader.enqueue(request);
Log.e("开始下载", "下载的id是" + reference); //创建一个下载的广播,下载完成之后
IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE); BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
long referenceTo = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
if (referenceTo == reference) {
Log.e("结束下载", "下载完成" + referenceTo);
Toast.makeText(getApplicationContext(), "文件下载完成", Toast.LENGTH_SHORT).show();
}
}
};
//注册广播
registerReceiver(myReceiver, intentFilter);
}
}

DownloadManager的使用的更多相关文章

  1. [Android Pro] 判断Uri对应的ContentProvider所操作的数据库u存在,及DownloadManager的暂停,继续

    reference to : http://blog.csdn.net/u012858313/article/details/38821857 项目中遇到一个问题,就是用到DownloadManage ...

  2. app的自动更新(调用DownloadManager)

    具体思路为:调用接口与服务器版本对比,当服务器版本号大于本地的,调用DownloadManager进行下载,之前也试过很多方法,但是兼容性都不是很好,还有一点要注意的是,在这里我并没有设置固定的下载路 ...

  3. DownloadManager

    在androi中,volley适合小文件的获取和大并发,如果支持大文件的下载可以用Android原生的DownloadManager.DownloadManager默认支持多线程下载.断点续传等. 基 ...

  4. Android 使用 DownloadManager 管理系统下载任务的方法,android管理系统

    从Android 2.3(API level 9)开始Android用系统服务(Service)的方式提供了Download Manager来优化处理长时间的下载操作.Download Manager ...

  5. DownloadManager补漏

    原始完成于:2014-10-24 20:01:03 DownloadManager是一个处理HTTP下载请求的系统服务: 1. 基本用法 1 private void download() { 2 R ...

  6. DownloadManager 的使用

    一.基本概念    1.DownloadManager是Android 2.3A (API level 9) 引入的,基于http协议,用于处理长时间下载. 2.DownloadManager对于断点 ...

  7. Android--调用系统的DownLoadManager去下载文件

    代码里面有详细的注释: /** * 该方法是调用了系统的下载管理器 */ public void downLoadApk(Context context,String url){ /** * 在这里返 ...

  8. 使用downloadmanager调用系统的下载

    /** * 文件名 UpdateDownload.java * 包含类名列表 com.issmobile.numlibrary.tool * 版本信息  版本号  * 创建日期 2014年7月14日  ...

  9. DownloadManager 下载管理类

    演示 简介 从Android 2.3开始新增了一个下载管理类,在SDK的文档中我们查找android.app.DownloadManager可以看到.下载管理类可以长期处理多个HTTP下载任务,客户端 ...

  10. 安卓开发之非常好用的AndroidOne框架DownloadManager

    AndroidOne框架是采用MVC模式,集成了Android主流开源技术及组件,是一款极速且简单高效开发框架,整个项目包含两个部分AndroidOne,oneCore AndroidOne为演示项目 ...

随机推荐

  1. PHP实现文件上传和下载(单文件上传、多文件上传、多个单文件上传)(面向对象、面向过程)

    今天我们来学习用PHP进行文件的上传和下载,并且用面向过程和面向对象的方式对文件上传进行一个限制 一.简单的上传测试 1.客户端:upload.php 2.后端:doAction.php 结果: 二. ...

  2. 利用photoshop制作gif图片

    首先准备你需要的几张素材图片 1.将素材图片根据发生的顺序放置在不同的图层 2.打开窗口下的时间轴 选择帧动画 3.创建第一张帧动画 选项卡右边这个按钮,点击这个选择新建帧 第一张图片显示其他的隐藏 ...

  3. win10蓝牙添加设备无法连接

    解决方法: 打开运行窗口,输入services.msc. 找到蓝牙支持服务(或者Bluetooth Support Service),右键,属性,启动类型选择手动,启动服务. 还不行的话,此电脑右键, ...

  4. Coursera 算法二 week 3 Baseball Elimination

    这周的作业不需要自己写算法,只需要调用库函数就行,但是有些难以理解,因此用了不少时间. import edu.princeton.cs.algs4.FlowEdge; import edu.princ ...

  5. IOS 导航控制器基本使用(UINavigationController代码创建方式)

    ● UINavigationController的使用步骤 ➢ 初始化UINavigationController ➢ 设置UIWindow的rootViewController为UINavigati ...

  6. 漫谈 Clustering (2): k-medoids

    上一次我们了解了一个最基本的 clustering 办法 k-means ,这次要说的 k-medoids 算法,其实从名字上就可以看出来,和 k-means 肯定是非常相似的.事实也确实如此,k-m ...

  7. 基于纹理内存的CUDA热传导模拟

    原文链接 项目中有三个,第一个是全局内存,其余两个分别是基于1d和2d纹理内存.项目打包下载. 纹理内存是只读内存,与常量内存相同的是,纹理内存也缓存在芯片中,因此某些情况下,它能减少对内存的请求并提 ...

  8. GCH文件

    GCH文件是将H文件当作CPP进行编译之后出现的结果, 在头文件进行编译后就会在文件夹中看到一个 “文件名.h.gch” 的文件. 那么在再次对gch文件进行编译的时候就会将gch当作cpp一样对待. ...

  9. C#关系运算符

    一.C#关系运算符 C#语言的关系运算符是对操作数的比较运算. 二.示例 using System;using System.Collections.Generic;using System.Linq ...

  10. 整合mybatis和spring时 Error creating bean with name 'sqlSessionFactory' defined in class path resource

    今天在整合mybatis和spring的时候出的错 报错如下 Exception in thread "main" org.springframework.beans.factor ...