Android DownloadManager下载进度查询(系列3)


我在之前写了写一些关于Android DownloadManager 的文章:
(系列1)《Android大数据、断点续传、耗时下载之DownloadManager开发简介(1)》文章链接地址:http://blog.csdn.net/zhangphil/article/details/48949027
(系列2)《Android DownloadManager下载状态查询(2)》文章链接地址:http://blog.csdn.net/zhangphil/article/details/48976427

文章(1)简单介绍了Android DownloadManager的基础使用方法,文章(2)是Android DownloadManager得基础下载状态查询。本文是在前两篇文章的基础上写作而成,本篇文章主要介绍如何查询Android DownloadManager某一个下载任务下载进度,比如,使用Android DownloadManager下载某一个大文件,在某时某刻需要查询该文件已经下载多少字节。
测试的MainActivity.java:

package zhangphil.demo;import android.app.Activity;import android.app.DownloadManager;import android.app.DownloadManager.Query;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.util.Log;import android.view.View;import android.widget.Button;public class MainActivity extends Activity {private DownloadManager downloadManager;private long Id;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {query();}});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);}// 查询下载进度,文件总大小多少,已经下载多少?private void query() {Query downloadQuery = new Query();downloadQuery.setFilterById(Id);Cursor cursor = downloadManager.query(downloadQuery);if (cursor != null && cursor.moveToFirst()) {int fileName = cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME);int fileUri = cursor.getColumnIndex(DownloadManager.COLUMN_URI);String fn = cursor.getString(fileName);String fu = cursor.getString(fileUri);int totalSizeBytesIndex = cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);int bytesDownloadSoFarIndex = cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR);// 下载的文件总大小int totalSizeBytes = cursor.getInt(totalSizeBytesIndex);// 截止目前已经下载的文件总大小int bytesDownloadSoFar = cursor.getInt(bytesDownloadSoFarIndex);Log.d(this.getClass().getName(),"from " + fu + " 下载到本地 " + fn + " 文件总大小:" + totalSizeBytes + " 已经下载:" + bytesDownloadSoFar);cursor.close();}}}


MainActivity.java依赖的activity_main.xml文件代码里面仅仅含有一个button下载查询状态的按钮,以触发查询事件,在此不再展开赘述。

更多相关文章

  1. Android广播接收器BroadcastReceiver——学会这一篇文章就够了
  2. Android中解析xml文件的接口
  3. Android 各种类型的资源 文件
  4. Android文件关联

随机推荐

  1. 2013.09.02(2)——— android 耳机意外拔
  2. Android(安卓)5.1 API 22 所有sdk文件下
  3. android TextView 文本过长时用滚动条显
  4. android TextView 文本过长时用滚动条显
  5. android布局属性详解
  6. 修改标题栏的高度
  7. Android(安卓)SDK更新以及ADT更新出现问
  8. My Android(安卓)Camera Notes
  9. android:网路检测
  10. minSdkVersion各个版本号对应android版本