Hatena::ブログ(Diary)

YUJimny備忘録

2011-03-03

WidgetのIntent.putExtraについて

Widgetで簡易ランチャを作ってみたが、いくつかの異なるViewをクリックするとそれぞれ異なったパラメータを渡したいのにうまくいかない。

9個のViewに対してそれぞれIntentを作成して、putExtraでパラメータを設定してServiceに飛ばすという感じを最初以下のようにしたらgetExtraをしても設定したパラメータが取れない。

Intent[] clickIntent = new Intent[9];
PendingIntent[] pendingIntent = new PendingIntent[9];

for(int i = 0; i < clickIntent.length; i++){
	clickIntent[i] = new Intent(ACTION_CLICK);
	clickIntent[i].putExtra(KEY, i);
	pendingIntent[i] = PendingIntent.getService(getApplicationContext(), 0, clickIntent[i], 0);
				views.setOnClickPendingIntent(icons[i], pendingIntent[i]);
			}

情報を探して以下のように修正

Intent[] clickIntent = new Intent[9];
PendingIntent[] pendingIntent = new PendingIntent[9];

for(int i = 0; i < clickIntent.length; i++){
	clickIntent[i] = new Intent(ACTION_CLICK);
	clickIntent[i].putExtra(KEY, i);
	pendingIntent[i] = PendingIntent.getService(getApplicationContext(), i(←ここ , clickIntent[i], PendingIntent.FLAG_UPDATE_CURRENT(←ここ◆);
				views.setOnClickPendingIntent(icons[i], pendingIntent[i]);
			}

,原因だったみたいですね。

でもAndroid DevelopersのリファレンスにはPendingIntent.getServiceの第引数の説明は以下のように書いてある。

Private request code for the sender (currently not used).

not usedって書いてあるから適当でいいと思ったのに…

参考URL

http://syun-blog.cocolog-nifty.com/blog/2010/04/androidappwidge.html

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/yujimny/20110303/1299115905
Connection: close