android DownloadManager广播事件:下载完成、通知栏点击事件

android中自带的下载器DownloadManager很好用,一般的需求都是可以满足的,至于怎么使用,暂不介绍,因为网上搜一下大把,就不浪费口水了。而我这里要分享的是开启下载之后通知栏的notify点击事件,因为我发现在网上很多人更多是倾向于介绍等有空再补充这里主要要介绍一下DownloadManager如何使用去下载,而对于下载过程中如何通过通知栏控制介绍甚少,这里我结合官方文档就简单介绍一下。


首先介绍一下如何在开启下载的时候,通知栏会有通知下载,代码如下:

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
//在通知栏中显示
request.setVisibleInDownloadsUi(true);

这样设置之后,开启一个下载任务在通知栏就会有通知显示下载过程


而在DownloadManager下载完成,或者需要在下载过程中通过点击通知来取消下载任务该如何做呢?首先看一下官方文档


可以看到前面有两个常量是广播(broadcast)对应的intent action,没错DownloadManager就是通过广播机制对下载完成跟点击事件进行广播的,那么我们要做的就是在AndroidManifest.xml里面声明一下广播,如下:

<receiver android:name="com.onecity.common.update.DownloadService$DownloadReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
                <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/>
            </intent-filter>
        </receiver>
再在代码里面进行接收,下面是整个接收器代码:

/**
	 * 
	 * @author 林楷鹏
	 * @description 下载完成广播接收器
	 * @create 2014-7-24下午3:28:34
	 *
	 */
	public static class DownloadReceiver extends BroadcastReceiver {
	
		@Override
		public void onReceive(Context context, Intent intent) {
			
			DownloadManager manager = (DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE);
			if(DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(intent.getAction())){
				DownloadManager.Query query = new DownloadManager.Query(); 
				//在广播中取出下载任务的id
				long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);
			    query.setFilterById(id); 
			    Cursor c = manager.query(query); 
			    if(c.moveToFirst()) { 
			    	//获取文件下载路径
			        String filename = c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME));
			        //如果文件名不为空,说明已经存在了,拿到文件名想干嘛都好
			        if(filename != null){
						
					}
			    }
			}else if(DownloadManager.ACTION_NOTIFICATION_CLICKED.equals(intent.getAction())){
				long[] ids = intent.getLongArrayExtra(DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS);
				//点击通知栏取消下载
				manager.remove(ids);
				ShowToastUtil.showShortToast(context, "已经取消下载");
			}
			
		}
		
	}


从代码中可以看到,在onReceive方法中对接收到的广播的action进行分析,匹配到广播对应的动作,可以做相应的处理。总结一点就是要多参考一下android的官方文档,有的东西网上写得不太清楚,但是有些人就爱乱抄。


### 回答1: Android系统是一个流行的移动操作系统,支持无线网络连接的设备非常普遍。然而,有时候用户可能希望使用有线以太网连接,以获得更稳定和快速的网络连接。那么,在Android系统中,有线以太网是如何与DownloadManager一起使用的呢? 首先,需要了解DownloadManager是什么。DownloadManagerAndroid系统提供的一个系统服务,用于处理网络下载任务。它可用于在后台异步下载各种文件,并提供了管理、监控和操作下载任务的功能。 要使用有线以太网连接与DownloadManager一起下载文件,首先要确保设备支持有线以太网连接功能。通常情况下,设备上会有一个USB Type-C或Ethernet接口,用于连接有线以太网适配器。通过将有线以太网适配器插入设备的接口上,并确保设置中启用了有线以太网选项,就可以实现有线以太网连接。 一旦设备与有线以太网连接成功,就可以使用DownloadManager来执行下载任务了。首先,需要创建一个DownloadManager.Request对象,并设置要下载的文件的URL、保存文件的目录路径、显示通知的标题等相关参数。然后,使用DownloadManager.enqueue()方法将请求加入下载队列,并返回一个下载任务的唯一ID。 下载任务加入队列后,DownloadManager会自动处理下载任务,包括断点续传、网络异常处理等。可以通过查询DownloadManager查询下载任务的状态,以及监听下载任务的进度和完成状态。 总之,Android系统支持有线以太网连接与DownloadManager一起使用,以实现稳定和快速的文件下载。通过连接有线以太网适配器,创建DownloadManager.Request对象,并加入下载队列,就可以轻松地进行有线以太网下载任务的管理和操作。 ### 回答2: AndroidDownloadManager类提供了一种方便的方式来通过有线以太网连接下载文件。有线以太网连接通常提供了更快的下载速度和更稳定的网络连接,而DownloadManager则是Android系统中的一个强大的下载管理器。 要使用有线以太网下载,首先需要确保设备连接到一个可用的有线以太网网络。然后,可以通过以下步骤使用DownloadManager进行下载: 1. 创建一个DownloadManager实例: DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 2. 创建一个DownloadManager.Request对象来描述下载请求: DownloadManager.Request request = new DownloadManager.Request(Uri.parse("下载链接")); // 设置一些下载请求的参数,例如设置保存文件的路径、显示通知等 3. 将下载请求添加到下载队列中: long downloadId = downloadManager.enqueue(request); 4. 可以使用下载ID来查询下载状态或管理下载任务: DownloadManager.Query query = new DownloadManager.Query(); query.setFilterById(downloadId); // 执行查询并获取下载任务的信息 Cursor cursor = downloadManager.query(query); // 根据需要处理下载任务的状态、进度等信息 5. 在下载完成后,可以通过监听下载完成广播或查询下载状态来获取下载的文件路径等信息: String filePath = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)); 通过上述步骤,我们可以在Android设备上使用有线以太网连接来下载文件。有线以太网相较于其他网络连接方式,可以提供更快速、稳定的下载体验,并且DownloadManager类可以帮助我们方便地管理和监控下载过程。 ### 回答3: Android的有线以太网DownloadManager是一个功能强大的下载管理器,它可以帮助用户在使用有线以太网连接时更有效地下载文件。 首先,有线以太网可以提供更稳定和快速的网络连接,相较于无线网络,它更适合下载大型文件和高速数据传输。有了有线以太网DownloadManager,用户可以更好地利用这种连接优势。 该下载管理器为用户提供了直观和简单的用户界面,用户只需点击链接或输入下载地址,便可将文件添加到下载队列中。用户可以随时暂停、恢复或取消下载过程,而不会中断其他正在进行的下载任务。这种灵活性使得用户能够更好地控制文件的下载进程。 有线以太网DownloadManager还支持多线程下载,这意味着它可以同时下载一个文件的不同部分,从而提高下载速度。此外,它利用了文件分片技术,将大文件分割成多个较小的块进行下载,从而提高整体下载效率。 另一个重要的功能是断点续传。如果下载过程中网络连接中断,用户只需重新连接到有线以太网并重新启动下载管理器,该管理器将自动检测到未完成下载并继续下载。这样,用户不必重新下载整个文件,节省了时间和网络资源。 总之,Android的有线以太网DownloadManager为用户提供了更快速、稳定和灵活的下载体验。它利用有线以太网的网络连接和多线程下载技术,使用户能够更高效地下载大文件。此外,它还支持断点续传,确保用户可以在中断的情况下无缝恢复下载
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值