配置具有不同内容的小部件

Configure Widgets with difference content

我的应用程序创建了许多相同类型但内容不同的小部件。当用户单击一个小部件时,了解 widgetId 很重要,因此我知道要更新的内容。

我的方法似乎完全错误,因为我的 PendingIntent 被覆盖了。所以我总是得到相同的 EXTRA_APPWIDGET_ID 而不是 n 个不同的。

这是我的代码,我为 OnClick.

设置 PendingIntent 的部分
// edit intent
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.base_info_widget);
Intent editIntent = new Intent(context,MainActivity.class);
editIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_CLEAR_TOP);         
editIntent.putExtra(GlobalVariables.COMMAND_KEY_ACTION,GlobalVariables.COMMAND_VALUE_EDIT);
editIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId);
Log.d(MY_TAG, "putExtra EXTRA_APPWIDGET_ID="+ Integer.toString(appWidgetId));
PendingIntent pendingEditIntent = PendingIntent.getActivity(context, 0, editIntent, PendingIntent.FLAG_CANCEL_CURRENT);
views.setOnClickPendingIntent(R.id.layout_wrapper, pendingEditIntent);

我希望我的问题很清楚。我该如何解决这个问题?

让您的意图与众不同:

 editIntent.setData(Uri.parse(editIntent.toUri(Intent.URI_INTENT_SCHEME)));

这就是为什么您在所有小部件上始终获得相同的 ID