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

宋寶康發表於2017-12-13

上篇文章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; 
      } 
   }
}
複製程式碼

###未完待續。。。

相關文章