应用更新后,小部件消失了。

8
更新我的应用程序后,有时所有旧的小部件都会从主屏幕消失。在应用程序启动器/小部件选择器中,我的三个小部件会出现两次- 直到重新启动才能恢复正常!有什么建议吗?

我的应用程序用户报告了相同的问题[小部件在应用程序更新后消失]。然而,我自己无法复制。 (两份报告恰好是三星设备:Note 3和S4)。 你能在哪些设备上重现? - jclova
这些用户报告了错误:Note 3 with 4.4.2,S4 with 4.4.2。看起来Android 4.4.2存在错误。因为用户还向我报告了我的小部件的其他问题。 - almisoft
可能这是Touchwiz launcher在4.4.2上的一个bug,可以参考Beautiful Widgets作者的报告:http://levelupstudio.com/en/blog-en/widgets-disappearing-with-samsung-4-4-2-roms - dvpublic
这是一个操作系统的漏洞,从4.4.x版本开始一直存在到Lollipop。在Nexus 5/6上开发时,我经常更新应用程序,有时甚至会看到小部件(甚至快捷方式)消失,即使在运行5.0.1的Nexus 5上也是如此,而且使用的是原始启动器!但似乎不影响第三方启动器。它只影响付费应用程序,因为它们安装在安全存储中,但当我更新我的应用程序时,它们被安装在内部非安全存储中,但问题偶尔会出现。 - 3c71
有人找到了解决方法吗? - 3c71
显示剩余2条评论
5个回答

1

在这个页面上有一篇长文谈论这个问题。

问题的核心似乎是这样的:

如果我们使用AppWidgetManager.EXTRA_WIDGET_IDS,而不是我们自己的密钥进行小部件更新操作,则不仅会破坏我们自己的小部件,还会破坏其他小部件。

不幸的是,我的代码没有受到这个问题的影响,但我仍然有用户报告了这个问题。同时发现这份报告


尝试将所有的“AppWidgetManager.EXTRA_WIDGET_ID”替换为我的自定义EXTRA_ID。这并没有起到帮助作用。问题出现在三星启动器上... - RusArtM
解释神秘案例并说明不要使用EXTRA_WIDGET_IDS的链接是关于一个非常不同的问题,它解释了“小部件存在,您可以长按并移动它,但它不会显示任何内容”。我认为OP是关于每个(付费)应用程序更新时小部件完全从启动器中删除的问题。 - 3c71

0

这是一个操作系统的漏洞,因为它更新应用程序的方式导致它们在相当长的时间内不可用。如果启动器在此期间更新小部件,则很可能会将它们解除,除非它实现了特定的解决方法以避免这种情况。

请在此处查看问题,以便(也许)Google考虑修复它:https://code.google.com/p/android/issues/detail?id=188137


0

我在将S4升级到安卓棒棒糖后发现我的小部件消失了。偶然发现,如果您双击左侧软键,屏幕底部会出现一个小部件图标。点击该图标即可打开小部件,所有小部件都在那里!


0

如果您更改小部件的确切包路径,那么在升级时它将会中断并且小部件将会消失。


0

这个问题给了我们一个解决方案。

我们正在使用MvvmCross实现Xamarin.Android项目。该项目使用小部件,在应用程序更新后,小部件消失了。链接中提到的问题为我们提供了一条找到解决方案的路径,我们使用APK-Analyzer分析旧版和新版APK之间的差异,并通过查看AndroidManifiest.xml文件发现所使用的AppWidgetProvider具有不同的包名称。通过进一步搜索,我们发现了来自Microsoft的发布说明,其中写道:

在此版本中,生成的Java类型名称与旧版本不同。任何明确使用以md5开头的旧名称之一的项目都需要手动更新以适应此更改。有关生成的Java类型名称的破坏性更改,请参见下面的内容。

通过将以下内容替换为定义常量名称:

[BroadcastReceiver(Label = "Widget Title")]
public class CustomProvider : AppWidgetProvider

[BroadcastReceiver(Label = "Widget Title", Name = "<old package name>.CustomProvider")]
public class CustomProvider : AppWidgetProvider

问题得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接