上篇文章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ù)驶俊。通過接受廣播我們可以打開對下載完成的內容進行操作
//注冊廣播
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;
}
}
}