上篇文章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;
}
}
}
複製程式碼
###未完待續。。。