DownloadManager是Android系统提供给第3方应用的下载管理功能。
我用它去下载一个apk.文件
DownloadManager.Request req = new DownloadManager.Request(Uri.parse(“apk url”));
DownloadManager dm = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
long downloadId = dm.enqueue(req);
可以看到我们构建了一个DownloadManager.Request对象,并获取到一个唯一的downloadId。downloadId用于查询这个文件的下载状态:
DownloadManager.Query query = new DownloadManager.Query().setFilterById(downloadId);
Cursor c = dm.query(query);if (c != null && c.moveToFirst()) {
int status = c.getInt(c.getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS));
switch (status) {
case DownloadManager.STATUS_PENDING:
break;
case DownloadManager.STATUS_PAUSED:
break;
case DownloadManager.STATUS_RUNNING:
break;
case DownloadManager.STATUS_SUCCESSFUL:
break;
case DownloadManager.STATUS_FAILED:
break;
}
if (c != null) {
c.close();
}
}
从这里之前一切都很美好! 真的没毛病。DownloadManager好强大啊,有没有。 可问题是DownloadManager的下载是系统处理的。也就是说调用了以后,下载没下载完都是他处理的。所以你只能通过唯一的downloadId 去获取你这个文件的下载状态。
那如果我现在退出了,我还是想知道之前下载那个文件的下载状态怎么办!! 我没保留downloadId 啊。 坑,我真不知道你这么重要。噗。。
你就不能根据apkurl去判断下载状态啊,唯一的apkurl就是唯一的下载状态。 亲!!
网友评论