本文共 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/