在应用程序从 Google Play 自动更新后,我们需要重新启动应用程序的前台服务。对于 SDK < 26,我们在 PACKAGE_REPLACED actoin 上注册了接收器,一切正常。如果隐式意图被禁止,我们如何在 SDK 26 中做同样的事情?谢谢。
问问题
1140 次
1 回答
5
首先,并非所有隐式广播都被禁止。有一个白名单。
其次,ACTION_MY_PACKAGE_CHANGED
是显式广播,仅发送到您的应用程序。引用文档:
面向 Android 8.0 或更高版本的应用无法再在其清单中为隐式广播注册广播接收器。隐式广播是不专门针对该应用程序的广播。例如,ACTION_PACKAGE_REPLACED 是一个隐式广播,因为它被发送给所有注册的监听器,让他们知道设备上的某些包被替换了。但是, ACTION_MY_PACKAGE_REPLACED 不是隐式广播,因为它只发送到包被替换的应用程序,无论有多少其他应用程序为该广播注册了侦听器。
因此,您应该能够注册ACTION_MY_PACKAGE_REPLACED
并在那里重新启动您的服务。
于 2018-06-09T21:08:35.013 回答