0

我有 appwidgetprovider 类如下,它调用一个活动来打开

for (int widgetId : allWidgetIds) {

        remoteViewParent = new RemoteViews(context.getPackageName(),R.layout.widget_initial_layout);

        try{
            Intent clickIntent = new Intent(context,Activity.class);//same class name is passed to give the call to itself
            clickIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                            //PASSING ID HERE
            clickIntent.putExtra("checkintent", ""+widgetId);


            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, clickIntent,PendingIntent.FLAG_UPDATE_CURRENT);
            remoteViewParent.setOnClickPendingIntent(R.id.widget_img_logo, pendingIntent);

            appWidgetManager.updateAppWidget(widgetId, remoteViewParent);

        }catch (Exception e) {
        }

    }

我希望活动在我的活动类中接收widgetId,所以我通过它传递它putExtra() 在此之后我一个一个添加3小部件,当我单击主屏幕上的任何小部件时,我只得到最后添加的小部件的ID(通过我的意图)

有没有办法区分对添加的特定小部件的点击,任何解决方法?

很久以来就陷入了这个困境。

我想要这个用于android2.2及更高版本。欢迎任何建议

4

1 回答 1

0

比较 PedingIntent 时不考虑 Extras,因此即使您更改了 extras,您也会得到相同的意图。FLAG_UPDATE_CURRENT表示当前的 PendingIntent 得到更新,因此您只获得最后一个 ID。如果要可靠地传递 ID,则必须将其放入 Intent 的数据中,然后您将能够为不同的 ID 获得不同的 PendingIntent。像这样的东西:

Uri data = Uri.withAppendedPath (Uri.parse("mywidget://mywidget/widgetId/#"),
                String.valueOf(widgetId));
intent.setData(data);

然后从 Intent 的数据中提取 ID 以区分小部件。

于 2012-05-25T01:40:18.913 回答