You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

android.intent.action.DOWNLOAD_COMPLETE意图广播范围及接收问题问询

关于android.intent.action.DOWNLOAD_COMPLETE广播的疑问解答

好问题!我来一步步帮你理清这个广播的特性和你遇到的问题:

1. 它是系统级广播吗?

严格来说,android.intent.action.DOWNLOAD_COMPLETE是系统发出的广播,但它不属于全局可接收的系统广播——系统对这个广播的发送做了定向限制。

2. 哪些应用能接收这个广播?

这里分两种核心场景:

  • 通过系统DownloadManager发起的下载:当你用DownloadManager.enqueue()提交下载任务后,系统会在任务完成时,将DOWNLOAD_COMPLETE广播仅发送给发起该下载的应用。其他应用即使注册了这个广播的接收器,也无法收到——这是Android系统的安全设计,目的是防止无关应用获取其他应用的下载行为信息。
  • 手动发送的广播(比如adb命令):如果你用adb shell am broadcast -a android.intent.action.DOWNLOAD_COMPLETE这样的命令发送广播,这属于全局广播,所有注册了该广播接收器的应用都能收到,这就是为什么你的应用能响应adb发送的广播,但收不到Chrome下载时的广播。

3. 为什么Chrome下载时你的应用收不到?

Chrome在处理下载时,要么是使用了自己内部的下载实现(不依赖系统DownloadManager,自然不会触发系统的DOWNLOAD_COMPLETE广播),要么是即使调用了DownloadManager,系统也只会把广播发送给Chrome的包名,你的应用作为第三方无法拦截到这个定向广播。

补充:如果想监听系统内的下载完成事件怎么办?

如果你的需求是监听所有系统内的下载完成事件,DOWNLOAD_COMPLETE这条路走不通。你可以尝试通过DownloadManager的内容提供者(content://downloads/my_downloads)来定时查询下载任务的状态变化,不过这种方式需要申请ACCESS_DOWNLOAD_MANAGER权限,且只能查询到公开的下载任务(部分应用的私有下载可能无法被访问)。

内容的提问来源于stack exchange,提问作者Parteek Dheri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:35:36