Уведомление появляется сразу после того, как я установил уведомление: android studio alarm manager

#java #android #alarmmanager

#java #Android #alarmmanager

Вопрос:

Странная ситуация, в которой я нахожусь, как и в моем приложении, сразу после того, как я установил время и передал значения часов и минут в качестве аргументов в методе setReminder, всего через несколько секунд появляется уведомление. А не в данный момент времени.

 public void setReminder(Context context, long reminderHour, long reminderMinute){

        Intent intent =new Intent(context,NotificationBroadcast.class);
        Log.d("Reminder Time set :", reminderHour ":" reminderMinute);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0, intent,0);
        Log.d("setReminder", "WORKING");
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
        long timeAtButtonClick = System.currentTimeMillis();
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        Calendar datetimetoalarm = Calendar.getInstance(Locale.getDefault());
        datetimetoalarm.setTimeInMillis(System.currentTimeMillis());
        StudyGoal studyGoal= StudyGoal.getStudyGoalObject();
        datetimetoalarm.set(Calendar.HOUR_OF_DAY, (int) reminderHour);
        datetimetoalarm.set(Calendar.MINUTE, (int) reminderMinute);
        datetimetoalarm.set(Calendar.SECOND, 0);
        datetimetoalarm.set(Calendar.MILLISECOND, 0);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, datetimetoalarm.getTimeInMillis(), (1000 * 60 * 60 * 24), pendingIntent);
        Log.d("SetReminder:", "WORKING");
        Log.d("Reminder Time set :", reminderHour ":" reminderMinute);
}
 

Комментарии:

1. не могли бы вы также опубликовать текущее время во время тестирования и ваши данные для напоминания о часе и напоминании о минуте

Ответ №1:

Оказывается, при использовании Alarm manager, если установленное время меньше текущего, напоминание сработает немедленно. Чтобы решить эту проблему, вам нужно будет добавить небольшой оператор if, как показано ниже… Он просто добавит день к вашему установленному времени, которое отправит уведомление на следующий день. if(reminderTime.before(Calendar.getInstance())){ reminderTime.add(Calendar.DATE,1); }