AlarmManagerに異なるintentと認識させる方法
AlarmManagerを使っていて、こんな経験はありませんか?
Pending Intentに入れるintentの設定で、遷移先のクラスは一緒で、intentに設定するデータが異なる予定を別々にセットしたい!
たとえば、普通に以下のように設定しようとすると、AlarmManagerでは同じintentとして見なされてしまう為、古いintentが上書きされてしまいます。
これを実行すると、20分後にcontentIntent02で設定したintentが処理されるはずです。つまり、同じintentだとみなされ、AlarmManagerが設定を上書きしてしまうんです。
これを見た時、「あー、PendingIntent.FLAG_UPDATE_CURRENTをセットしているから上書きされてしまうんやなかろうか?」とも思ったんですが、このフラグを0にしても、結果は変わりませんでした。
設定を上書きしたい時(目覚ましの時間変更など)ではこの実装で便利なのですが、
時間差で、同じActivityを異なるデータを渡して起動させたい場合には困ります。
そこで、以下のようにすると、予定の上書きを回避できます。
ダミーのパラメータを付与してあげる事によって、AlarmManagerでは別のintentだ、と見なされ、上書きを回避できます。
AlarmManagerに限らず、Androidのソースは公開されているので、それらを読んでみると、意外な発見があるかもしれません。

これはノティフィケーションでタップされた時の動作にも使えました!
大変感謝いたします。