重命名AppWidgetProvider而不破坏现有的小部件

时间:2018-12-22 11:10:51

标签: android android-appwidget appwidgetprovider

我最近发现,在重命名扩展AppWidgetProvider的类(作为代码整理的一部分)并安装修改后的应用程序之后,现有的小部件会损坏,仅显示“问题加载小部件”。

在主屏幕上添加新的小部件效果很好,只是现有的小部件会损坏。对于我作为开发人员来说,我不介意删除现有的小部件并添加一个新的小部件,但是我的应用程序的用户不会这样做,因为每个小部件都需要花费一些时间来重新配置。

因此,有没有一种方法可以安全地重命名AppWidgetProvider类而不破坏现有的小部件?我当然可以保留原样,但让我不安的感觉是我永远坚持这个名称(事后看来有些混乱)。

1 个答案:

答案 0 :(得分:1)

不幸的是,没有办法解决它。问题出在更改的ComponentName中。 AppWidgetHost 只是尝试从 AppWidgetManager 获取小部件,而 AppWidgetManager 试图通过 ComponentName 获取以前的小部件,因此更改您的 AppWidgetProvider 的程序包名称, AppWidgetHost 无法还原您以前的窗口小部件,因为他保存了旧的ComponentName。如您所见,无法更改包名称​​ AppWidgetProvider