首页 > 解决方案 > 如何在 Android Oreo 中更新应用程序后重新启动前台服务?

问题描述

在应用程序从 Google Play 自动更新后,我们需要重新启动应用程序的前台服务。对于 SDK < 26,我们在 PACKAGE_REPLACED actoin 上注册了接收器,一切正常。如果隐式意图被禁止,我们如何在 SDK 26 中做同样的事情?谢谢。

标签: androidrestartandroid-8.0-oreoandroid-implicit-intent

解决方案


首先,并非所有隐式广播都被禁止。有一个白名单

其次,ACTION_MY_PACKAGE_CHANGED是显式广播,仅发送到您的应用程序。引用文档

面向 Android 8.0 或更高版本的应用无法再在其清单中为隐式广播注册广播接收器。隐式广播是不专门针对该应用程序的广播。例如,ACTION_PACKAGE_REPLACED 是一个隐式广播,因为它被发送给所有注册的监听器,让他们知道设备上的某些包被替换了。但是, ACTION_MY_PACKAGE_REPLACED 不是隐式广播,因为它只发送到包被替换的应用程序,无论有多少其他应用程序为该广播注册了侦听器。

因此,您应该能够注册ACTION_MY_PACKAGE_REPLACED并在那里重新启动您的服务。


推荐阅读