android 系統(tǒng)下載 Download Manager(二)Download Manager使用詳情

上篇文章android 系統(tǒng)下載 Download Manager(一)DownloadManager.Request講完Request的創(chuàng)建的常用方法。

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.注冊廣播接收者,監(jiān)聽下載狀態(tài)
下載完成后,下載管理會發(fā)出DownloadManager.ACTION_DOWNLOAD_COMPLETE這個廣播,并傳遞downloadId作為參數(shù)。通過接受廣播我們可以打開對下載完成的內(nèi)容進行操作

//注冊廣播
mContext.registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

下載完成時,發(fā)送的廣播。
對應的Action為:ACTION_DOWNLOAD_COMPLETE
Notification被點擊時發(fā)送的廣播。
對應的Action為:ACTION_NOTIFICATION_CLICKED
查看所有下載情況的廣播。
對應的Action為:ACTION_VIEW_DOWNLOADS

//廣播接受者,接收下載狀態(tài) 
private BroadcastReceiver receiver = new BroadcastReceiver() {    
    @Override   
    public void onReceive(Context context, Intent intent) { 
       checkDownloadStatus();//檢查下載狀態(tài)     
    }
};
/檢查下載狀態(tài)
 private void checkDownloadStatus() { 
DownloadManager.Query query = new DownloadManager.Query(); 
query.setFilterById(mTaskId);//篩選下載任務,傳入任務ID,可變參數(shù) 
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; 
      } 
   }
}

未完待續(xù)。。。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容