以编程方式删除AppWidgets

时间:2010-12-25 23:24:20

标签: android android-appwidget

我正在努力想出如何以编程方式删除主屏幕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);

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

2 个答案:

答案 0 :(得分:27)

您无法在主屏幕中添加或删除应用小部件。只有用户才能这样做。

与已删除帐户相关联的任何应用小部件都可以显示不同的帐户,或采用一些“(已删除帐号)”外观,以触发用户摆脱应用小部件或重新配置它。

答案 1 :(得分:0)

我很确定这应该有效:

int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName("com.example",
                        "com.example.Widget"));
AppWidgetHost host = new AppWidgetHost(ctx, 0);
host.deleteAppWidgetId(appWidgetIds[0]);