Android DownloadManager下载完成事件监听(系列4)

我在之前写了写一些关于Android DownloadManager 的文章:
(系列1)《Android大数据、断点续传、耗时下载之DownloadManager开发简介(1)》文章链接地址:http://blog.csdn.net/zhangphil/article/details/48949027
(系列2)《Android DownloadManager下载状态查询(2)》文章链接地址:http://blog.csdn.net/zhangphil/article/details/48976427
(系列3)《Android DownloadManager下载进度查询(系列3)》文章链接地址:http://blog.csdn.net/zhangphil/article/details/49248723
文章(1)简单介绍了Android DownloadManager的基础使用方法;文章(2)是Android DownloadManager的基础下载状态查询;文章(3)是Android DownloadManager下载进度的查询。
本文是在前三篇文章的基础上写作而成,本文介绍:当Android DownloadManager下载某一个任务完成时候,可以立即获得下载任务完成的消息通知。Android DownloadManager通过注册一个广播监听系统的广播事件完成此操作,在创建广播时候,需要指明过滤器为:DownloadManager.ACTION_DOWNLOAD_COMPLETE
测试的主Activity MainActivity.java:

package zhangphil.demo;import android.app.Activity;import android.app.DownloadManager;import android.app.DownloadManager.Request;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.widget.Toast;public class MainActivity extends Activity {private BroadcastReceiver broadcastReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// setContentView(R.layout.activity_main);DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);// 假设从这一个链接下载一个大文件。Request request = new Request(Uri.parse("http://apkc.mumayi.com/2015/03/06/92/927937/xingxiangyi_V3.1.3_mumayi_00169.apk"));// 仅允许在WIFI连接情况下下载request.setAllowedNetworkTypes(Request.NETWORK_WIFI);// 通知栏中将出现的内容request.setTitle("我的下载");request.setDescription("下载一个大文件");// 下载过程和下载完成后通知栏有通知消息。request.setNotificationVisibility(Request.VISIBILITY_VISIBLE | Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);// 此处可以由开发者自己指定一个文件存放下载文件。// 如果不指定则Android将使用系统默认的// request.setDestinationUri(Uri.fromFile(new File("")));// 默认的Android系统下载存储目录request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "my.apk");// enqueue 开始启动下载...long Id = downloadManager.enqueue(request);Log.d(this.getClass().getName(), "开始下载任务:" + Id + " ...");listener(Id);}private void listener(final long Id) {// 注册广播监听系统的下载完成事件。IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);broadcastReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {long ID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);if (ID == Id) {Toast.makeText(getApplicationContext(), "任务:" + Id + " 下载完成!", Toast.LENGTH_LONG).show();}}};registerReceiver(broadcastReceiver, intentFilter);}@Overridepublic void onDestroy() {super.onDestroy();unregisterReceiver(broadcastReceiver);}}

更多相关文章

  1. protobuf系列-grpc快速开始(Android)
  2. Android LBS系列04 位置和地图服务简介
  3. android 圆形头像—— android开源系列:CircleImageView自定义圆
  4. Android textview autolink web 隐藏链接问题
  5. 最全面的Android学习路线 思维导图附知识点链接
  6. Dojo mobile TweetView 系列教程之五 —— TweetView: Android,打
  7. android 首开机会在数据链接图标的状态栏打开并自行消失主动
  8. .Net程序员玩转Android系列之一~Java快速入门

随机推荐

  1. php - tcp 粘包/拆包实例
  2. 10个PHP常见安全问题(实例讲解)
  3. Yii授权之基于角色的存取控制 (RBAC)
  4. python怎么添加环境变量
  5. PHP面试踩过的坑
  6. php响应Json字符串头部出现非法字符“\u
  7. 几个不常用但特别实用的PHP预定义变量
  8. php架构师主要是做什么的
  9. php实现对图片对称加解密(适用身份证加密
  10. php开发环境是什么