[Android开发] 使用DownloadManager下载
来源:互联网 发布:宜家费兰床垫 知乎 编辑:程序博客网 时间:2024/05/29 07:03
主要使用DownloadManager.Request进行下载。
- 完整的项目:https://github.com/lijiancheng0614/android-NetworkConnect
- 参考:http://developer.android.com/reference/android/app/DownloadManager.html
可选
- 注册一个BroadcastReceiver来监听下载完成,并使用Callback来执行下载完成后的事件。
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);context.registerReceiver(downloadReceiver, filter);
使用DownloadManager.Query查询是否下载成功。
设置Notification。
request.setNotificationVisibility(Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
- 结合网络状况下载。
// Restrict the types of networks over which this download may proceed.request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);// Set whether this download may proceed over a roaming connection.request.setAllowedOverRoaming(false);
代码
- DownloadHelper.java
package com.example.android.networkconnect;import android.app.DownloadManager;import android.app.DownloadManager.Request;import android.app.DownloadManager.Query;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.database.Cursor;import android.net.Uri;import android.os.Environment;/** * Download file helper. */public class DownloadHelper { private DownloadManager downloadManager; private Request request; private long downloadId = -1; /** * Broadcast when the download has successfully completed. */ private BroadcastReceiver downloadReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { long completeDownloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); if (completeDownloadId == downloadId) { // if download successful if (getInt(downloadId, DownloadManager.COLUMN_STATUS) == DownloadManager.STATUS_SUCCESSFUL) { mDownloadDoneCallback.onDownloadDone(); } } } }; private DownloadDoneCallback mDownloadDoneCallback; public DownloadHelper(Context context, String uri, DownloadDoneCallback downloadDoneCallback) throws Exception { downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); Uri downloadUri = Uri.parse(uri); request = new Request(downloadUri); String filename = downloadUri.getLastPathSegment(); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, filename); request.setTitle(filename); request.setNotificationVisibility(Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); mDownloadDoneCallback = downloadDoneCallback; // Set filter to only when download is complete and register broadcast receiver IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE); context.registerReceiver(downloadReceiver, filter); } /** * Start downloading. */ public void start() { if (request == null) { return; } //Enqueue a new download and same the referenceId downloadId = downloadManager.enqueue(request); } /** * Get int value of a column for the id. * * @param id filter id. * @param columnName column name. * @return first value of the column for the id. */ private int getInt(long id, String columnName) { int result = -1; Cursor cursor = null; try { Query query = new Query().setFilterById(id); cursor = downloadManager.query(query); if (cursor != null && cursor.moveToFirst()) { result = cursor.getInt(cursor.getColumnIndex(columnName)); } } finally { if (cursor != null) { cursor.close(); } } return result; } /** * Callback when the download has successfully completed. */ public interface DownloadDoneCallback { public void onDownloadDone(); }}
0 0
- [Android开发] 使用DownloadManager下载
- android开发(23)使用DownloadManager下载文件
- android开发(23)使用DownloadManager下载文件
- Android使用DownloadManager下载文件
- 使用Android自带DownloadManager下载文件
- 使用Android自带DownloadManager下载文件
- 使用Android自带DownloadManager下载文件
- 使用Android自带DownloadManager下载文件
- 使用Android自带DownloadManager下载文件
- Android中使用DownloadManager进行下载操作
- Android使用DownLoadManager(下载管理器)更新版本
- Android使用DownloadManager实现文件下载
- Android-不使用downloadmanager更新下载
- Android 下载文件 DownloadManager
- Android 演示 DownloadManager 下载
- Android系统下载DownloadManager
- Android DownLoadManager 下载
- 使用DownloadManager下载
- enable native heap in ddms
- django 配置静态文件
- 第9周项目1复数类中的运算符重载(续)
- PBOC卡片应用分析(一)
- Android调试:如何输出调试信息
- [Android开发] 使用DownloadManager下载
- 竞争编码
- ffmpeg h265 usage example
- android对话框代码中设置背景为透明
- 设计模式大全
- PBOC卡片应用分析(二)
- DIV+CSS布局教程
- Objective-C语法快速参考
- Xcode 常用快捷键