如何在Android Oreo中更新应用程序后重新启动前台服务?

时间:2018-06-09 20:55:10

标签: android restart android-8.0-oreo android-implicit-intent

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

1 个答案:

答案 0 :(得分:3)

首先,并非所有隐式广播都被禁止。有a whitelist

其次,ACTION_MY_PACKAGE_CHANGED是一种显式广播,仅发送给您的应用。引用the documentation

  

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

因此,您应该可以注册ACTION_MY_PACKAGE_REPLACED,然后在那里重新开始服务。