如何在特定时间内自动启用/禁用推送通知

时间:2020-04-02 16:10:12

标签: java android alarmmanager repeatingalarm

我刚开始使用Android的闹钟服务。我想创建一个药物提醒,它是药物信息和每天重复通知的次数作为输入数据。但是,我只想在上午7点到晚上7点之间启用通知。因此,这些应用程序将仅在该时间内通知,并且这些应用程序也将在上午7点开始通知。

示例:如果用户希望每天从应用程序中重复3次通知,则应用程序将每4小时通知他们服药一次(12小时/ 3次= 4小时)。

我已经尝试过使用while循环,但是如果条件为真,它就不会按我预期的那样工作,即使现在还不是时候,它也会一直保持通知状态(这发生在我的代码中)。

所以,这是我尝试做的:

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 7);
while(calendar.get(Calendar.HOUR_OF_DAY) >= 0) {
    while (calendar.get(Calendar.HOUR_OF_DAY) >= 7 && calendar.get(Calendar.HOUR_OF_DAY) <= 19) {
           // the process here
    }
    calendar.add(Calendar.HOUR_OF_DAY, 1);
}

很抱歉,我的代码在很多方面都缺乏。但是,我真的希望你们能帮助我或与我分享任何其他可能的解决方案。谢谢。

1 个答案:

答案 0 :(得分:0)

您设置的日历小时不正确。

替换

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 7);
while(calendar.get(Calendar.HOUR_OF_DAY) >= 0) {
    while (calendar.get(Calendar.HOUR_OF_DAY) >= 7 && calendar.get(Calendar.HOUR_OF_DAY) <= 19) {
           // the process here
    }
    calendar.add(Calendar.HOUR_OF_DAY, 1);
}

使用

Calendar cc = Calendar.getInstance();
int mHour = cc.get(Calendar.HOUR_OF_DAY);

if (mHour  >= 7 && mHour  <= 19) {
               // the process here
        }
相关问题