DownloadManager
来源:互联网 发布:美国离线导航软件 编辑:程序博客网 时间:2024/05/21 21:38
下载文件:
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);Uri uri = Uri.parse("http://soft1.xitongzhijia.net:808/201202/Win7Loader.rar");DownloadManager.Request request = new Request(uri);dm.enqueue(request);
//设置漫游情况下是否下载
request.setAllowedOverRoaming(false);
//只允许WIFI环境下下载
request.setAllowedNetworkTypes(Request.NETWORK_WIFI);
//获取移动网络下载的最大值
Long maxBytes = DownloadManager.getMaxBytesOverMobile(this);
//默认情况下DownloadManager下载的文件不会被媒体扫描器扫描
request.allowScanningByMediaScanner();
//使下载的文件在系统的Downloads应用是可见和可管理的
request.setVisibleInDownloadsUi(true);
下载完成广播:
广播Action:DownloadManager.ACTION_DOWNLOAD_COMPLETE
@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction() == DownloadManager.ACTION_DOWNLOAD_COMPLETE) {long longExtra = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);if (downloadId == longExtra) {Log.d("DownloadReceiver", "longExtra:"+longExtra);Query query = new Query();query.setFilterById(downloadId);Cursor cursor = dm.query(query);if (cursor.moveToFirst()) {String fileName = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME));String fileUri = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));Log.d("DownloadReceiver", "fileName:"+fileName+"---fileUri:"+fileUri);}cursor.close();}}}
通过Query对象获取下载后文件的信息。
下载Notification点击的广播:
广播Action:DownloadManager.ACTION_NOTIFICATION_CLICKED
@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction() == DownloadManager.ACTION_NOTIFICATION_CLICKED) {long[] longArrayExtra = intent.getLongArrayExtra(DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS);for (long longExtra : longArrayExtra) {if (longExtra == downloadId) {Log.d("DownloadNotificationReceiver", "longExtra:"+longExtra);}}}}
自定义Notification
request.setTitle("111xxx.rar");
request.setDescription("Resource File Download");
request.setNotificationVisibility(Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
Request.VISIBILITY_VISIBLE:默认值,当下载进行时,将显示一个持续的Notification表示持续时间。下载完成后,Notification移除。
Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED:下载完成后,继续显示在通知栏中,不会移除。
Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION:只有下载完成,Notification才会显示。(在android5.0上没效果)
Request.VISIBILITY_HIDDEN:不为下载显示Notification。需要权限 DOWNLOAD_WITHOUT_NOTIFICATION uses-permission
指定下载的位置
需要权限:android.permission.WRITE_EXTERNAL_STORAGE
//下载到指定的位置
File file = new File(Environment.getExternalStorageDirectory()+"/xxx/"+"xxx.rar");
request.setDestinationUri(Uri.fromFile(file));
request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS, "xxx.jpg");
//希望媒体扫描器扫描的文件
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC, "xxx.mp3");
取消和删除下载
downloadManager.remove(long...);
查询DownloadManager
通过query方法查询下载请求的状态、进度及详细信息,该方法返回一个cursor。
Query query = new Query();query.setFilterByStatus(DownloadManager.STATUS_PAUSED);Cursor cursor = dm.query(query);while (cursor.moveToNext()) {int reason = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_REASON));String title = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_TITLE));int fileSize = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));int downloadSize = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));String reasonStr = "Unknown";switch (reason) {case DownloadManager.PAUSED_QUEUED_FOR_WIFI:reasonStr = "Waiting for Wifi";break;case DownloadManager.PAUSED_WAITING_FOR_NETWORK:reasonStr = "Waiting for Connectivity";break;case DownloadManager.PAUSED_WAITING_TO_RETRY:reasonStr = "Waiting for retry";break;}StringBuffer sb = new StringBuffer();sb.append("reason:"+reasonStr+"\n");sb.append("title:"+title+"\n");sb.append("filesize:"+fileSize+"\n");sb.append("downloadSize:"+downloadSize);Log.d("", sb.toString());}
- DownloadManager
- DownloadManager
- DownloadManager
- DownloadManager
- DownloadManager
- Downloadmanager
- DownloadManager
- DownloadManager
- DownloadManager
- DownloadManager
- DownloadManager
- DownloadManager
- DownLoadManager
- DownloadManager
- DownloadManager使用
- DownloadManager Example
- DownloadManager使用
- DownloadManager 解析
- PyCharm 教程(五)断点 调试
- AlarmManager
- Unity第一视角MouseLook源码分析
- 2014年黑龙江省应用技术研究与开发计划重大项目招标公告
- 城里城外
- DownloadManager
- wpa_supplicant daemon server & GUI test message
- 练车经验
- 破解WPA/WPA2 for Non-Dictionary Passphrase
- iOS - self & super 理解的关键点
- Cocos2d-x Lua中实例:特效演示
- 黑马程序员——java语言基础部分——String、StringBuffer StringBuild学习笔记一
- js中将字符串转换成json的三种方式
- Log4j配置实例(log4j.xml)