添加后重新配置小部件

6

当一个小部件被添加到主屏幕后,如何重新打开其配置活动?

以下来自Google搜索的代码无法工作,因为extra中的小部件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个回答

5

好的,虽然我晚了一年,但我正在寻找与您相同的答案,并注意到您的代码中缺少一个标志,这是我几天前遇到有关挂起意图、额外信息和小部件的不同问题的答案。请尝试更改您代码中的这一行:

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

转换为:

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

PendingIntent会复用现有的符合新意图的缓存意图,而“匹配”不考虑附加信息,因此新的附加信息可能会被忽略。添加FLAG_UPDATE_CURRENT使PendingIntent将extras写入缓存的意图(或类似于此)。

无论如何,上述方法刚刚对我起作用了(尽管我还使用了AppWidgetManager.ACTION_APPWIDGET_CONFIGURE作为操作名称,如果这有任何区别的话)。


0

很遗憾,您不能这样做:当前的小部件规范不支持通过小部件配置活动重新配置小部件。

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


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