毎日同時に通知するアラームを実装しようとしています。それはうまく動作します。しかし、私は再びアラームを設定すると、アラームが設定されている時間が経過しているので、来るのを待つことなく、その場で私に通知します。しかし、Calendar.DATE
をCalendar.DAYS_OF_MONTH
に変更すると、私に通知されません。だから、私が間違っているところで助けてくれる人がいます。私は以下のコードを共有しています。毎日のアラーム問題、Calendar.DATEとCalendar.DAYS_OF_MONTHの相違
public void setNotification() {
PendingIntent pendingIntent = createPendingIntent();
Calendar calendarToSet=Calendar.getInstance();
Calendar currentTime=Calendar.getInstance();
calendarToSet.set(Calendar.HOUR,10);
calendarToSet.set(Calendar.MINUTE,0);
calendarToSet.set(Calendar.SECOND,0);
calendarToSet.set(Calendar.AM_PM,Calendar.AM);
if(calendarToSet.before(currentTime))
{
calendarToSet.set(Calendar.DATE,1);
}
AlarmManager alarmManager = (AlarmManager) MyAppManager.context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendarToSet.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
// Toast.makeText(MyAppManager.context, "set", Toast.LENGTH_LONG).show();
}
public PendingIntent createPendingIntent() {
Intent intent = new Intent(MyAppManager.context, TaffaquhFiddinBroadCastReceiver.class);
intent.putExtra("key", "What_to_say_upon_completing_ablution");
PendingIntent pendingIntent = PendingIntent.getBroadcast(MyAppManager.context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
return pendingIntent;
}
私がやっていることは、時間が過ぎた場合に翌日にアラームを設定することですので、助けてください。
Calendar.DATE
とCalendar.DAYS_OF_MONTH
の違いは何ですか?
user13答えをご覧ください。 'set'を使うと、あなたの場合は最初の月の日(例01.01)を設定します。 'add'を使うと、現在の暦日にある日を追加するだけです。 – Opiatefuchs
だからセットを使用しています。月の1日目に日付を設定しますか?もしそうなら、あなたが現在設定されている日付が過去のものであれば、アンドロイドのalarmManagerが始まります。それがアラームをすぐに受け取る理由は、 – FaisalAhmed
はいです。 .. – Opiatefuchs