【发布时间】:2021-11-25 08:45:16
【问题描述】:
如果目标设备上的应用程序更新或卸载,我想接收广播。根据文档,我可以使用ACTION_PACKAGE_REPLACED 和ACTION_PACKAGE_REMOVED。
替换操作:已安装新版本的应用程序包,替换之前安装的现有版本。
删除操作:现有应用程序包已从设备中删除。数据包含包的名称。被移除的包没有收到这个 Intent。
所以我在前台服务中实现了这个:
val mIntentFilter = IntentFilter()
mIntentFilter.addAction("android.intent.action.PACKAGE_REMOVED")
mIntentFilter.addAction("android.intent.action.PACKAGE_REPLACED")
mIntentFilter.addDataScheme("package")
this.registerReceiver(applicationReceiver, mIntentFilter)
它非常适合删除动作,但不幸的是,我没有收到任何更新动作的广播。
我发现这是因为 Google 对 API 26 及更高版本施加的限制:
作为 Android 8.0(API 级别 26)后台执行限制的一部分,以 API 级别 26 或更高级别为目标的应用不能再在其清单中为隐式广播注册广播接收器。
由于这是我的应用程序的主要功能之一,任何人都可以帮我解决这个问题吗?
【问题讨论】:
标签: android kotlin broadcastreceiver