android 系统下载 Download Manager(二)Download Manager使用详情

上篇文章android 系统下载 Download Manager(一)DownloadManager.Request讲完Request的创建的常用方法。

1.获取Download Manager对象

DownloadManager downloadManager= (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);

2.将Request添加到downloadManager

//加入下载队列后会给该任务返回一个long型的id,
//通过该id可以取消任务,重启任务等等
long mTaskId = downloadManager.enqueue(request);Log.i(TAG, "downloadAPK: mTaskId" + mTaskId);

3.注册广播接收者,监听下载状态
下载完成后,下载管理会发出DownloadManager.ACTION_DOWNLOAD_COMPLETE这个广播,并传递downloadId作为参数。通过接受广播我们可以打开对下载完成的内容进行操作

//注册广播
mContext.registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

下载完成时,发送的广播。
对应的Action为:ACTION_DOWNLOAD_COMPLETE
Notification被点击时发送的广播。
对应的Action为:ACTION_NOTIFICATION_CLICKED
查看所有下载情况的广播。
对应的Action为:ACTION_VIEW_DOWNLOADS

//广播接受者,接收下载状态 
private BroadcastReceiver receiver = new BroadcastReceiver() {    
    @Override   
    public void onReceive(Context context, Intent intent) { 
       checkDownloadStatus();//检查下载状态     
    }
};
/检查下载状态
 private void checkDownloadStatus() { 
DownloadManager.Query query = new DownloadManager.Query(); 
query.setFilterById(mTaskId);//筛选下载任务,传入任务ID,可变参数 
Cursor c = downloadManager.query(query);
 if (c.moveToFirst()) {
   int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS)); 
      switch (status) {
         case DownloadManager.STATUS_PAUSED: 
                MLog.i(">>>下载暂停");
         case DownloadManager.STATUS_PENDING:
                 MLog.i(">>>下载延迟");
         case DownloadManager.STATUS_RUNNING:
                 MLog.i(">>>正在下载");
               break; 
        case DownloadManager.STATUS_SUCCESSFUL:
               MLog.i(">>>下载完成"); 
             break; 
      } 
   }
}

未完待续。。。

你可能感兴趣的:(android 系统下载 Download Manager(二)Download Manager使用详情)