最近在一个项目中需要下载服务器数据,本来是自己写个线程,后来发现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));}具体什么意思,大家看看文档就明白了,这里不再赘述了。
本文介绍如何利用Android系统自带的DownloadManager类简化下载服务器数据的过程,包括配置下载请求、接收下载完成广播以及获取下载状态等关键步骤,提供了一个方便、高效的下载解决方案。

2854

被折叠的 条评论
为什么被折叠?



