我正在努力想出如何以编程方式删除主屏幕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);
有没有人对如何实现这一点有任何建议?一个例子是蜜蜂的膝盖。感谢。
答案 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]);