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

Sol*_*Men 2 android restart android-implicit-intent android-8.0-oreo

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

Com*_*are 5

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

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

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

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