小编Bru*_*eno的帖子

android.intent.action.DOWNLOAD_COMPLETE是一个明确的广播?

我的应用程序(targetSdk = 25)在清单中定义了广播接收器,如下所示:

<receiver android:name="my.package.DownloadManagerReceiver"
     android:exported="true">
     <intent-filter>
          <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
     </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

DownloadManagerReceiver当Android的DownloadManager完成下载文件时,我会收到通知,因此我可以对下载的文件进行一些处理.

我正在努力将我的应用程序的targetSdk迁移到27(奥利奥).根据https://developer.android.com/about/versions/oreo/background#broadcasts,通过清单注册的隐式广播接收器不应该在Android O中工作(除了那些列入白名单的例外).

但是,当我使用运行Android 8.0和targetSdk = 27的模拟器运行我的应用程序时,清单中定义的广播接收器仍然会在下载完成后由DownloadManager 通知.

我试图找到DownloadManager发送其广播的源代码,以了解它如何发送其广播,但我找不到它.

有人知道是否android.intent.action.DOWNLOAD_COMPLETE是一个明确的广播而不是一个隐含的广播?我的接收器仍然接收该广播的任何想法?

android broadcastreceiver android-manifest android-download-manager android-8.0-oreo

6
推荐指数
1
解决办法
568
查看次数