我的应用程序(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
android ×1