清单中 DownloadManager.ACTION_DOWNLOAD_COMPLETE 的接收器

Ale*_*dro 2 android android-manifest android-download-manager

是否可以在Manifest.xml中监听DownloadManager.ACTION_DOWNLOAD_COMPLETE

我发现的所有示例registerReceiver(downloadCompleteReceiver,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));均来自 a class,但我希望在 Manifest.xml 中接收它,以便我可以在应用程序关闭时收听。当我尝试在 Manifest.xml 中为接收器设置意图过滤器时,我找不到此操作

tyn*_*ynn 5

正如官方文档所述:

从 Android 8.0(API 级别 26)开始,系统对清单声明的接收器施加了额外的限制。

如果您的应用面向 Android 8.0 或更高版本,则无法使用清单来声明大多数隐式广播(不专门针对您的应用的广播)的接收器。当用户主动使用您的应用程序时,您仍然可以使用上下文注册的接收器。

来自android.intent.action.DOWNLOAD_COMPLETE 是显式广播吗?我们了解到这android.intent.action.DOWNLOAD_COMPLETE似乎是一个显式广播,因此在清单中为其定义 a 应该没有问题<receiver>,即使它不是自动完成的。因此只需通过 操作添加它即可android.intent.action.DOWNLOAD_COMPLETE

<receiver 
    android:name=".your.DownloadCompleteReceiver"
    android:permission="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS"
    android:exported="true">
  <intent-filter>
     <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
  </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)