今回のようなケースでは、受信側のクラスが指定されるので、明示的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 件のコメント:
コメントを投稿