`

Android中的PendingIntent传送widgetID总是最后一个

阅读更多

疑问如题:

Intent intent = new Intent(context, MyWidgetProvider.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

PendingIntent doubleClick = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
-------------------------------->
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0);

这是我遇到的问题,虽然通过修改getBroadcast方法的最后一个参数是int flag为PendingIntent.FLAG_UPDATE_CURRENT避免了在传送过程中出现的数据为空,但是得到的数据却总是Home screen中的最后一个该包的widgetID。此疑问未解。

 

问题解决,代码如下:

Intent intent = new Intent(context, MyWidgetProvider.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

Log.i(TAG, "appWidgetId "+appWidgetId);
PendingIntent doubleClick = PendingIntent.getBroadcast(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
remoteViews.setOnClickPendingIntent(R.id.widget, doubleClick);
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);

也就是将getBroadcast的第二个参数修改为我们要传递的appWidgetId即可。

 

分享到:
评论
1 楼 cn23snyga 2013-06-18  
Intent intent = new Intent("org.test.broadcast.HELLO");
intent.putExtra("hello", hello);
PendingIntent pIntent = PendingIntent.getBroadcast(mContext, notifyId, intent,
				PendingIntent.FLAG_UPDATE_CURRENT);
mNotificationManager.notify(notifyId, mNotification);

请教贵博!
1、PendingIntent.FLAG_UPDATE_CURRENT
2、notifyId
我这样使用,为什么无法改变接收到的hello的值,永远是第一次赋给的值。

相关推荐

Global site tag (gtag.js) - Google Analytics