应用程序更新后,窗口小部件接收器停止工作

时间:2015-09-26 07:32:13

标签: android widget

我开发的小部件有一个奇怪的问题。小部件在主屏幕上正常工作,更新应该。我最近对代码进行了一些更改,为widget接收器增加了一些意图。

小部件的原始意图过滤器如下:

<intent-filter>
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>

更改后,我添加了以下意图:

<intent-filter>
    <action android:name="com.basi.widget.MY_UPDATE_WIDGET" />
    <action android:name="android.intent.action.TIME_CHANGED" />
    <action android:name="android.intent.action.TIMEZONE_CHANGED" />
    <action android:name="android.intent.action.LOCALE_CHANGED" />
</intent-filter>

并将窗口小部件从服务更新更改为由发送MY_UPDATE_WIDGET意图的定期警报更新。 问题是当我更新应用程序时,小部件停止更新并出现“问题加载小部件”。当我从主屏幕中删除小部件并将其添加回来时,即使我安装了进一步的更新,它仍然可以正常工作。看起来特定更新出了问题,即改变了意图。我已经检查了logcat并且没有错误,但我注意到onReceive意图在初始更新后没有启动,所以这可能是问题。

我怀疑主屏幕上的小部件知道要接收哪些意图 - 如果没有重新初始化(通过删除它并将其添加回来),它将不会收听新意图所以这就是为什么问题发生了。有没有办法告诉小部件开始接收新的意图?这是一个不同的问题吗?

1 个答案:

答案 0 :(得分:1)

经过多个小时的反复试验后,我发现了问题所在。我在更新中做出的一项更改是将窗口小部件类移动到更新版本中的其他包中。在用新版本替换包之后,这似乎“破坏”现有小部件的功能。将窗口小部件类文件移回原始包修复了问题。附加意图没有任何问题。

希望这会对某人有所帮助。