我们需要在应用程序从Google Play自动更新后重新启动应用程序的前台服务。对于SDK < 26版本,我们在PACKAGE_REPLACED actoin上注册了接收器,一切工作正常。如果禁止隐式意图,我们如何在SDK 26中做同样的事情?谢谢。
发布于 2018-06-10 05:08:35
首先,并不是所有的隐式广播都被禁止。这就是a whitelist。
其次,ACTION_MY_PACKAGE_CHANGED
是一个明确的广播,只发送给你的应用程序。引用the documentation
以Android8.0或更高版本为目标的
应用程序不能再在其清单中注册隐式广播的广播接收器。隐式广播是指不专门针对该应用程序的广播。例如,ACTION_PACKAGE_REPLACED是一种隐式广播,因为它会发送给所有注册的侦听器,让它们知道设备上的某个包已被替换。然而,ACTION_MY_PACKAGE_REPLACED不是一个隐含的广播,因为它只发送到包被替换的应用程序,无论有多少其他应用程序注册了该广播的侦听器。
因此,您应该能够注册ACTION_MY_PACKAGE_REPLACED
,并在那里重新启动您的服务。
https://stackoverflow.com/questions/50778456
复制相似问题