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

问题描述 投票:0回答:1

我刚开始使用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);
}

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

java android alarmmanager repeatingalarm
1个回答
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
        }
© www.soinside.com 2019 - 2024. All rights reserved.