如何将旧的小部件迁移到新的小部件

3
我正在开发的应用程序现在有三个小部件。每个小部件都有不同的大小和固定的布局文件。现在我开发了一个新的小部件,它可以调整大小并自适应。根据其大小加载相应的布局文件。
现在,在我的应用程序的下一个更新中,我想实现以下目标:
  1. 仅在小部件抽屉中列出新的自适应小部件,因此无法创建旧的小部件
  2. 已经存在的小部件应使用新小部件的逻辑来更新其视图
现在我认为这两个目标是相互矛盾的。当我从清单中删除或禁用小部件接收器时,小部件将从小部件抽屉中消失,但同时主屏幕上的现有小部件会出现问题。
如果让现有的小部件提供程序使用新逻辑,则旧小部件的行为与新小部件相同,但小部件抽屉中会有四个相同的小部件。
有办法实现我的目标吗?如果不行,是否可能隐藏旧小部件以供新用户使用,而对于正在更新应用程序的现有用户则仍然可见?
非常感谢您的回答!
1个回答

2

这个问题目前没有解决方案。当你移动小部件提供者的包名时,小部件会被删除。

我最终选择使用我的旧小部件中已迁移到新提供者的一个提供者。另外三个小部件被删除了。


花了一些时间研究这个问题,我可以确认这仍然是事实。甚至没有办法更改小部件使用的提供程序 - bindAppWidgetIdIfAllowed 方法是为启动器设计的,并需要权限来编辑所有小部件。文档还说它只适用于新的小部件 ID,但我还没有确认这一点。 - rubenwardy

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