我们需要在从Google Play自动更新应用程序后重新启动应用程序的前台服务。对于SDK< 26我们在PACKAGE_REPLACED actoin上注册了接收器,一切正常。如果禁止隐式意图,我们怎样才能在SDK 26中做同样的事情?感谢。
答案 0 :(得分:3)
首先,并非所有隐式广播都被禁止。有a whitelist。
其次,ACTION_MY_PACKAGE_CHANGED
是一种显式广播,仅发送给您的应用。引用the documentation:
针对Android 8.0或更高版本的应用无法再在其清单中为隐式广播注册广播接收器。隐式广播是一种不专门针对该应用的广播。例如,ACTION_PACKAGE_REPLACED是隐式广播,因为它被发送到所有已注册的侦听器,让他们知道设备上的某些包已被替换。但是,ACTION_MY_PACKAGE_REPLACED不是隐式广播,因为无论有多少其他应用程序为该广播注册了监听器,它都只发送给其软件包被替换的应用程序。
因此,您应该可以注册ACTION_MY_PACKAGE_REPLACED
,然后在那里重新开始服务。