Manifestにブロードキャストレシーバーを書き、<intent-filter>のactionとして"android.intent.action.DATE_CHANGED"を設定すれば受信出来ます。
これを受信するアプリの動作確認をするとき、どうするでしょうか。
おそらく端末の時間をいじって、23:59に設定する人が多いと思います(勘です)。
1分待てば受信できますからね。
ただ、このIntent、何故か端末の時間をいじると送信されないことがあるようです。
何故そうなるのかよくわかりません。
そのとき作っていたアプリもいくら日付をいじっても全然受信しませんでした。
もしや?と思い、"昼の11:59"に設定してみました。
1分待ってみると、Intentを受信しました。昼の12:00です。ACTION_DATE_CHANGEDでした。
どういことでしょうか。時間をいじり過ぎておかしくなってしまったのでしょうか。
僕がこの動作を確認したのはhtc Desire(海外モデル)とIS01です。他の端末でも起こるかもしれません。
頻繁に時間をいじっていたので、00:00に発行されるはずのIntentが遅れてたまたま12:00ちょうどに発行されたのでしょうか?
よくわかりません。
でも、今はちゃんと00:00に受信しています(少なくともDesireは)。
よくわかりません。
「わからない」ばかり書いたので、最後に少しは役に立つ(と思う)ことを。
このIntentは基本的に1日1回来るので、いろいろと便利に使えると思います。
ただ、これを契機に通信をするのは避けた方が良いです。
僕はそのときの想像が出来ていなかったので、ひどいことになりました。
アプリを使っている人たちが一斉にアクセスしてくるのです。恐ろしいですね…。
通信するにしても、Intent受信後すぐに通信するのではなく、ユーザーからのアクセスがバラけるように工夫すると良いと思います。
タグ:android