最近在一個項目中需要下載服務器數據,本來是自己寫個線程,後來發現2.3後有個Downloadmanager類可以用,這個類功能實在強大,進度條有,下載完了也會發出廣播,還能得到有關下載任務的任何信息,實在方便,這裏介紹下我用到的一些功能吧。
首先,要下載東西的話,把下載地址給downloadmanager就可以了,如下
DownloadManager downloadManager = (DownloadManager)
getSystemService(DOWNLOAD_SERVICE);
File file = new File(dstPath);
Uri dstUri = Uri.fromFile(file);
DownloadManager.Request dwreq = new DownloadManager.Request(
uri);
dwreq.setDestinationUri(dstUri);
downloadManager.enqueue(dwreq);
剩下的就不用我們管了,如果我們要獲得這個下載的信息,Query這個類就好了,可以看看文檔。
我這裏想收到下載完成的廣播後查看下剛剛下載完的這個東西是什麼,這麼實現的:
DownloadManager dm = (DownloadManager)getSystemService(DOWNLOAD_SERVICE);
long downloadId = getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);
Query query = new Query();
query.setFilterById(downloadId);
Cursor cur = dm.query(query);
if (cur.moveToFirst()) {
int columnIndex = cur.getColumnIndex(DownloadManager.COLUMN_STATUS);
if (DownloadManager.STATUS_SUCCESSFUL == cur.getInt(columnIndex)) {
String uriString = cur.getString(cur.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));}
具體什麼意思,大家看看文檔就明白了,這裏不再贅述了。