最近在一个项目中需要下载服务器数据,本来是自己写个线程,后来发现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));}
具体什么意思,大家看看文档就明白了,这里不再赘述了。