主要目标是获得有关应用程序更新的通知,并在应用程序更新后重新启动服务。
拥有广播接收器并收听Intent.ACTION_PACKAGE_REPLACED
在应用程序更新时启动我的服务。我收到以下错误
BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REPLACED dat=package:com.volvocars.dj flg=0x4000010 (has extras) } to com.volvocars.drivingjournal/.core.service.KeepTheAppAliveReceiver
乍一看,这像是后台执行限制之一,
我发现可以将ACTION_PACKAGE_REPLACED
替换为ACTION_MY_PACKAGE_REPLACED
,结果是错误消失,但BroadcastReceiver没有收到任何更新事件,无法正常工作。如何解决此问题?
1条答案
按热度按时间ldioqlga1#
确保
AndroidManifest.xml
的广播接收器类ClassChild.java
具有此intent-filter
:并且如果我们假设
ClassChild
可以扩展classParent
,则让ClassChild
覆盖classParent
的onReceive()
:和
classParent.java
的onReceive()
可以共享的孩子检查广播(你不把有趣的事情,如final onReceive()
,导致儿童无法覆盖):最后,如果您担心Android Studio可能无法发送
MY_PACKAGE_REPLACED
广播,您可以使用命令adb install -r -d <your.apk>
测试应用更新。(-r
表示重新安装并保留其数据,-d
表示允许版本降级)