16

我很难弄清楚如何以编程方式删除主屏幕 AppWidget(即没有用户实际将其拖入垃圾箱)。例如,考虑一个可以有多个帐户的应用程序,每个帐户具有任意数量的小部件——一旦删除了一个帐户,小部件也应该被删除。

我已经尝试从http://www.netmite.com/android/mydroid/cupcake/frameworks/base/services/java/com/android/server/AppWidgetService.java遵循一个不起眼的例子,但这似乎并不甚至触发 OnDeleted,更不用说从主屏幕中删除 AppWidget。

Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_DELETED);
intent.setComponent(info.componentName); // references AppWidgetProvider's class
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
sendBroadcast(intent);

有人对如何实现这一点有任何建议吗?一个例子是蜜蜂的膝盖。谢谢。

4

2 回答 2

29

您无法从主屏幕添加或删除应用小部件。只有用户可以这样做。

任何与已删除帐户关联的应用小部件都可能显示不同的帐户,或者采用某种“(帐户已删除)”外观,这会触发用户摆脱应用小部件或重新配置它。

于 2010-12-25T23:43:45.710 回答
-2

我很确定这应该有效:

int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName("com.example",
                        "com.example.Widget"));
AppWidgetHost host = new AppWidgetHost(ctx, 0);
host.deleteAppWidgetId(appWidgetIds[0]);
于 2011-10-14T23:09:26.643 回答