2012年10月13日土曜日

明示的InterntをPendingIntentを経由して使う

今回のようなケースでは、受信側のクラスが指定されるので、明示的Intentで書く必要があります。

でも、それだけではなくて、生成したIntentをそのままアラームやボタンに定義はできません。

アラームやボタンにインテントを仕掛けるには、PendingIntentへ組み込んで、後で打ち出し処理が

出来るようにしてやる必要があります。

花火に例えるとIntent打ち上げ用の打ち上げ筒=PendingIntent、アラーム=発火装置と考えれば

いいでしょうか。

下記の例ではアラームにセットするためにPendingIntentを使用していますが、AppWidgetProviderの

上に定義したボタン等からIntentを飛ばす際にもこのPendigIntentを使用する必要があります。

実際の使い方は

Uri uri = Uri.parse("http://google.com");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

PendingIntent sender = PendingIntent.getBroadcast(ctx, 0, intent, 0);

AlarmManager am = (AlarmManager)(ctx.getSystemService(ALARM_SERVICE));

Calendar cal = Calendar.getInstance();

cal.setTimeInMillis(currentTime);

cal.set(Calendar.MINUTE, 5);

am.set(AlarmManager.RTC_WAKEUP,cal.aTimerInMillis,sender);

※やっぱり嘘入りでした。_wakeupが付いていると、消費電力対策になりません。イベント発生時に強制的に起動してしまいます。

違っていたらミクのソース見て後で直します。

0 件のコメント:

コメントを投稿