包的应用程序小部件?

时间:2011-01-11 22:15:00

标签: android android-widget

嘿伙计们,我有应用程序小部件,我想通过单击小部件将一些数据发送到附加到PendingIntent的intent。 这是我的代码

final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
    int appWidgetId = appWidgetIds[i];
    Intent intent = new Intent(context, UpComingBDays.class);
    if(bdaysAmount != 0){
    Bundle bundle = new Bundle();
    bundle.putIntegerArrayList("WIDGETIDS", tempAllIDS);
    intent.putExtras(bundle);
    System.out.println("bund insertedddddddddddddd.....................");
    }
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
        intent, 0);
    RemoteViews remoteView = new RemoteViews(context.getPackageName(),
        R.layout.widget_layout);
    remoteView.setTextViewText(R.id.widget_text, finalText4TextView);
    remoteView.setOnClickPendingIntent(R.id.WidgetImageButton, pendingIntent);
    appWidgetManager.updateAppWidget(appWidgetId, remoteView);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);

我意识到总是“bund inserteddddddddddd ......”打印在CatLog上,但意图的包是空的。

什么是不正确的?如何通过单击小部件发送数据。 PLZ不提供使用服务,因为我的代码没有任何东西。 非常感谢。

2 个答案:

答案 0 :(得分:0)

在创建FLAG_UPDATE_CURRENT时尝试使用PendingIntent

答案 1 :(得分:0)

很抱歉在半年后回复帖子:)对于那些在发现此问题时会发现此帖子的人:我发现,FLAG_UPDATE_CURRENT是不够的:

http://developer.android.com/reference/android/app/PendingIntent.html

如果你需要多于一个在意图包中包含不同数据的小部件,那么这个标志将不起作用,因为Intent将被覆盖。

要解决此问题,您需要更新意图数据:

http://developer.android.com/guide/topics/appwidgets/index.html

// When intents are compared, the extras are ignored, so we need to embed the extras
// into the data so that the extras will not be ignored.
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));