Android开发Android技术知识Android开发

DownloadManagerAPI和封装

2019-03-24  本文已影响33人  CokeNello

0 .Thanks

官方文档

Android系统下载管理DownloadManager功能介绍及使用示例

1 .概述

DowanloadManger:系统的服务,系统开放给第三方应用使用的类,用于管理下载。
DownloadManager.Query:用来查询下载信息
DownloadManager.Request:用来请求一个下载

2 .DownloadManager.Request

Add an HTTP header to be included with the download request.
添加一个Http的头到下载的请求。

If the file to be downloaded is to be scanned by MediaScanner, this method should be called before enqueue(Request) is called.
可以理解为,允许媒体的扫描。需要在任务开始前调用。

3 .DownloadManager.Query

查询任务。

查询可以通过:

private void queryDownloadStatus() {
        DownloadManager.Query query = new DownloadManager.Query();
        final DownloadManager downloadManager= (DownloadManager) 
                  this.getSystemService(Context.DOWNLOAD_SERVICE);
        query.setFilterById(TaskID);
        Cursor c = downloadManager.query(query);
        if(c.moveToFirst()) {
            int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
            switch(status) {
                case DownloadManager.STATUS_PAUSED:
                case DownloadManager.STATUS_PENDING:
                case DownloadManager.STATUS_RUNNING:
                case DownloadManager.STATUS_SUCCESSFUL:
            }
       }
}

去查询任务的状态。

下载的监听:

 /**
     * 得到下载的状态
     * @param context       上下文
     * @param downloadId    ID
     * @return  0 : 已经下载的量(bytes) , 1 : 总的大小, 2 : 下载的状态
     */
    public static int[] getBytesAndStatus(Context context, long downloadId) {
        int[] bytesAndStatus = new int[] { -1, -1, -1 };
        DownloadManager.Query query = new DownloadManager.Query()
                                      .setFilterById(downloadId);
        DownloadManager downloadManager = (DownloadManager)   
                  context.getSystemService(Context.DOWNLOAD_SERVICE);
        Cursor c = null;
        try {
            c = downloadManager.query(query);
            if (c != null && c.moveToFirst()) {
                bytesAndStatus[0] = c.getInt(c.getColumnIndexOrThrow(DownloadManager
                                .COLUMN_BYTES_DOWNLOADED_SO_FAR));
                bytesAndStatus[1] = c.getInt(c.getColumnIndexOrThrow(DownloadManager
                                .COLUMN_TOTAL_SIZE_BYTES));
                bytesAndStatus[2] = c.getInt(c.getColumnIndex(DownloadManager
                                .COLUMN_STATUS));
            }
        } finally {
            if (c != null) {
                c.close();
            }
        }
        return bytesAndStatus;
    }
上一篇 下一篇

猜你喜欢

热点阅读