0

アンドロイド 2.1

コード:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, day);
cal.set(Calendar.HOUR, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

Intent intent = new Intent(this, AlarmReceiver.class);
intent.putExtra("message", header);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);

日時を設定せずに数秒追加するだけで、完全に機能します。

しかし、日付と時刻を設定すると(別のアクティビティからの回答としてデータを取得します)、機能せず、取得しているデータが正しいものであることを3回確認しました。

私が間違っていることについて何かアドバイスはありますか?

4

1 に答える 1

3

あなたが言ったように、これがあなたのコードの唯一の問題になると思います。

日付と時刻を設定せず、数秒追加するだけで完全に機能します。

like 変数で異なる値を取得し、それらをobjectmonth,date,yearに設定しています。Calendar

参考までに: calendar オブジェクトは 1 月 = 0 および 12 月 = 11 のように月をとります。

Jan=1 および Dec=12としてそれらを取得しているとは思えないため、アラームでトリガーする翌月の日付を不明に設定しています。

取得している月の値を確認して適用するcal.set(Calendar.MONTH, month-1);と、機能します。


PendingIntentそのアラーム コードをループで記述した場合は、1 つの静的な値ではなく、毎回一意の ID を渡すように注意してください。

于 2012-07-02T12:43:08.860 に答える