立即获得下载任务完成的消息通知。Android DownloadManager通过注册一个广播监听系统的广播事件完成此操作,在创建广播时候,需要指明过滤器为:DownloadManager.ACTIO

来源:互联网 发布:java 获取年的第一天 编辑:程序博客网 时间:2024/05/22 16:51

立即获得下载任务完成的消息通知。Android DownloadManager通过注册一个广播监听系统的广播事件完成此操作,在创建广播时候,需要指明过滤器为:DownloadManager.ACTION_DOWNLOAD_COMPLETE
测试的主Activity MainActivity.Java:

[java] view plain copy
  1. package zhangphil.demo;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.DownloadManager;  
  5. import android.app.DownloadManager.Request;  
  6. import android.content.BroadcastReceiver;  
  7. import android.content.Context;  
  8. import android.content.Intent;  
  9. import android.content.IntentFilter;  
  10. import android.net.Uri;  
  11. import android.os.Bundle;  
  12. import android.os.Environment;  
  13. import android.util.Log;  
  14. import android.widget.Toast;  
  15.   
  16. public class MainActivity extends Activity {  
  17.   
  18.     private BroadcastReceiver broadcastReceiver;  
  19.   
  20.     @Override  
  21.     protected void onCreate(Bundle savedInstanceState) {  
  22.         super.onCreate(savedInstanceState);  
  23.         // setContentView(R.layout.activity_main);  
  24.   
  25.         DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);  
  26.   
  27.         // 假设从这一个链接下载一个大文件。  
  28.         Request request = new Request(  
  29.                 Uri.parse("http://apkc.mumayi.com/2015/03/06/92/927937/xingxiangyi_V3.1.3_mumayi_00169.apk"));  
  30.   
  31.         // 仅允许在WIFI连接情况下下载  
  32.         request.setAllowedNetworkTypes(Request.NETWORK_WIFI);  
  33.   
  34.         // 通知栏中将出现的内容  
  35.         request.setTitle("我的下载");  
  36.         request.setDescription("下载一个大文件");  
  37.         // 下载过程和下载完成后通知栏有通知消息。  
  38.         request.setNotificationVisibility(Request.VISIBILITY_VISIBLE | Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);  
  39.   
  40.         // 此处可以由开发者自己指定一个文件存放下载文件。  
  41.         // 如果不指定则Android将使用系统默认的  
  42.         // request.setDestinationUri(Uri.fromFile(new File("")));  
  43.   
  44.         // 默认的Android系统下载存储目录  
  45.         request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "my.apk");  
  46.   
  47.         // enqueue 开始启动下载...  
  48.         long Id = downloadManager.enqueue(request);  
  49.         Log.d(this.getClass().getName(), "开始下载任务:" + Id + " ...");  
  50.   
  51.         listener(Id);  
  52.     }  
  53.   
  54.     private void listener(final long Id) {  
  55.   
  56.         // 注册广播监听系统的下载完成事件。  
  57.         IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);  
  58.         broadcastReceiver = new BroadcastReceiver() {  
  59.             @Override  
  60.             public void onReceive(Context context, Intent intent) {  
  61.                 long ID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);  
  62.                 if (ID == Id) {  
  63.                     Toast.makeText(getApplicationContext(), "任务:" + Id + " 下载完成!", Toast.LENGTH_LONG).show();  
  64.                 }  
  65.             }  
  66.         };  
  67.   
  68.         registerReceiver(broadcastReceiver, intentFilter);  
  69.     }  
  70.   
  71.     @Override  
  72.     public void onDestroy() {  
  73.         super.onDestroy();  
  74.         unregisterReceiver(broadcastReceiver);  
  75.     }  
0 0
原创粉丝点击