Android Уведомление отображается, даже если время уже прошло - PullRequest
0 голосов
/ 20 июня 2020

Так, например, даже если сейчас 19:40, когда я создаю уведомление и устанавливаю его время на 19:00, оно отображается как можно быстрее после создания. Мой код для создания notif. выглядит следующим образом:

private void setNotificationTime(int hour,int minute,int position){
    Log.i("NotificationValues",hour+":"+minute+" ,"+position+" "); //Testing purposes
    AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, Notification.class);
    PendingIntent alarmIntent = PendingIntent.getBroadcast(this, position, intent, 0);
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.set(Calendar.HOUR_OF_DAY, hour);
    calendar.set(Calendar.MINUTE, minute);
    alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent);
}

Более того, если я устанавливаю время уведомления на будущее, оно работает нормально.

1 Ответ

0 голосов
/ 21 июня 2020

Итак, как прокомментировал @CommonsWare, я сначала должен проверить, прошло ли время уже, используя такой метод, как этот

private boolean compareTime(int hour,int minute) throws Exception{
    SimpleDateFormat parser = new SimpleDateFormat("HH:mm");
    String now[] = parser.format(new Date()).split(":");
    int hourNow = Integer.parseInt(now[0]);
    int minuteNow = Integer.parseInt(now[1]);
    if(hourNow>=hour && minuteNow>minute){
        return true;
    }
    return false;
}

, а затем что-то вроде этого:

if(compareTime()){
    calendar.add(Calendar.DAY_OF_YEAR, 1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...