博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android DownloadManager下载状态查询(2)
阅读量:7114 次
发布时间:2019-06-28

本文共 3011 字,大约阅读时间需要 10 分钟。



Android DownloadManager下载状态查询(2)

在我写的前一篇文章中,

《Android大数据、断点续传、耗时下载之DownloadManager开发简介(1)》
文章链接地址:
大致简介了Android DownloadManager如何完成一个下载任务。这篇文章在前一篇文章的基础上,做一些小改动,增加对下载任务状态的查询。
现在给出全部源代码。
MainActivity.java文件:

package zhangphil.demo;import android.app.Activity;import android.app.DownloadManager;import android.app.DownloadManager.Request;import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {	private DownloadManager downloadManager;	private long Id;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		Button button = (Button) findViewById(R.id.button);		button.setOnClickListener(new View.OnClickListener() {			@Override			public void onClick(View v) {				// remove将依据Id号取消相应的下载任务				// 可批量取消,remove(id1,id2,id3,id4,...);				downloadManager.remove(Id);			}		});		downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);		// 假设从这一个链接下载一个大文件。		Request request = new Request(				Uri.parse("http://apkc.mumayi.com/2015/03/06/92/927937/xingxiangyi_V3.1.3_mumayi_00169.apk"));		// 仅允许在WIFI连接情况下下载		request.setAllowedNetworkTypes(Request.NETWORK_WIFI);		// 通知栏中将出现的内容		request.setTitle("我的下载");		request.setDescription("下载一个大文件");		// 下载过程和下载完成后通知栏有通知消息。		request.setNotificationVisibility(Request.VISIBILITY_VISIBLE | Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);		// 此处可以由开发者自己指定一个文件存放下载文件。		// 如果不指定则Android将使用系统默认的		// request.setDestinationUri(Uri.fromFile(new File("")));		// 默认的Android系统下载存储目录		request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "my.apk");		// enqueue 开始启动下载...		Id = downloadManager.enqueue(request);		Button queryButton = (Button) findViewById(R.id.queryButton);		queryButton.setOnClickListener(new View.OnClickListener() {			@Override			public void onClick(View v) {				queryStatus();			}		});	}	// 根据DownloadManager下载的Id,查询DownloadManager某个Id的下载任务状态。	private void queryStatus() {		DownloadManager.Query query = new DownloadManager.Query();		query.setFilterById(Id);		Cursor cursor = downloadManager.query(query);		String statusMsg = "";		if (cursor.moveToFirst()) {			int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));			switch (status) {			case DownloadManager.STATUS_PAUSED:				statusMsg = "STATUS_PAUSED";			case DownloadManager.STATUS_PENDING:				statusMsg = "STATUS_PENDING";			case DownloadManager.STATUS_RUNNING:				statusMsg = "STATUS_RUNNING";				break;			case DownloadManager.STATUS_SUCCESSFUL:				statusMsg = "STATUS_SUCCESSFUL";				break;			case DownloadManager.STATUS_FAILED:				statusMsg = "STATUS_FAILED";				break;			default:				statusMsg = "未知状态";				break;			}			Toast.makeText(getApplicationContext(), statusMsg, Toast.LENGTH_SHORT).show();		}	}}

MainActivity.java需要的布局文件activity_main.xml:

转载地址:http://uxwel.baihongyu.com/

你可能感兴趣的文章
angular ng-repeat出来的数据 每条修改数据后返回给接口 如何取到每个对应修改的值...
查看>>
nodeJs express mongodb 建站(linux 版)
查看>>
java使用websocket,并且获取HttpSession,源码分析
查看>>
odoo开发笔记 -- 视图继承扩展
查看>>
图书管理系统——面向对象程序设计
查看>>
ASP.NET发送电子邮件
查看>>
LINQ学习(三):Where子句
查看>>
Hadoop之Hive 安装_在hadoop 伪分布上
查看>>
hadoop 之 kafka 安装与 flume -> kafka 整合
查看>>
mysql
查看>>
python日志输出
查看>>
Dynamics CRM 开启EmailRouter日志记录
查看>>
CF219B:Special Offer! Super Price 999 Bourles!(贪心)
查看>>
***apache做301重定向的方法
查看>>
CentOS 7安装OpenCV 3.3.1
查看>>
display:inline、block、inline-block的区别
查看>>
tornado 01 路由、输入与输出
查看>>
AtCoder Grand Contest 023
查看>>
MySQL系列详解十:MySQL多源复制演示-技术流ken
查看>>
mysql常用函数示例
查看>>