添加小部件后重新配置小部件

时间:2011-06-26 18:54:03

标签: android configuration widget android-appwidget

在将小部件添加到主屏幕后,如何重新打开小部件的配置活动?

Google搜索中的以下代码不起作用,因为额外内容中的小部件ID不会继续执行此活动:

String ACTION_WIDGET_CONFIGURE = "ConfigureWidget";
Intent configIntent = new Intent(context, Configuration.class);
configIntent.setAction(ACTION_WIDGET_CONFIGURE);
configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
views.setOnClickPendingIntent(R.id.editButton, configPendingIntent);

2 个答案:

答案 0 :(得分:4)

好的,我已经太晚了,但我只是在寻找与你相同的答案,并注意到你的代码中缺少一个标志,这是几天前我遇到的另一个问题的答案意图,演员和小工具。尝试更改代码的这一行:

PendingIntent configPendingIntent
    = PendingIntent.getActivity(context, 0, configIntent, 0);

到此:

PendingIntent configPendingIntent
     = PendingIntent.getActivity(context, 0, configIntent,
                                 PendingIntent.FLAG_UPDATE_CURRENT);

PendingIntent将重用与新匹配的现有缓存意图,并且“匹配”不考虑额外内容,因此可以忽略新的附加内容。添加FLAG_UPDATE_CURRENT会使PendingIntent将额外内容写入缓存的intent(或类似内容)。

无论如何,上面的内容刚刚适用于我(虽然我也使用AppWidgetManager.ACTION_APPWIDGET_CONFIGURE作为动作名称,如果这有任何区别的话。)

答案 1 :(得分:0)

不幸的是你没有:当前存在的widget规范不支持通过widget配置活动重新配置小部件。

您可以执行的操作是启动窗口小部件配置活动并手动跟踪特定窗口小部件ID:一旦新设置到位,您就可以使用适当的管理器方法手动更新窗口小部件。但是,您将无法使用与新窗口小部件相同的代码路径。