【问题标题】:How to automatic enable/disable push notification for certain time如何在特定时间自动启用/禁用推送通知
【发布时间】:2020-04-02 16:10:12
【问题描述】:

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

如果我的代码在很多方面都存在不足,我深表歉意。但是,我真的希望你们能帮助我或与我分享任何其他可能的解决方案。谢谢。

【问题讨论】:

  • 在您的接收器中,您可以选择时间窗口
  • @Usman Zafer 很抱歉问这个问题。但是你能告诉我如何选择它吗?
  • 您是否使用广播接收器来显示通知?
  • @Usman Zafer 是的,我正在使用广播接收器来显示通知
  • 在你的receive中,检查当前时间是否在7点到19点之间

标签: java android alarmmanager repeatingalarm


【解决方案1】:

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

替换

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
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2011-09-24
    • 2019-11-28
    相关资源
    最近更新 更多