繁体   English   中英

每天安排警报管理器

[英]Schedule Alarm Manager daily

我在设置Android AlarmManager每天执行时遇到一些问题。 用户可以设置自己的特定时间,并且应该每天在该时间运行。 这是代码:

@Override
protected void onResume() {
    super.onResume();

    Intent intent = new Intent(MainActivity.this,
            NotificationBroadcastReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getService(
            MainActivity.this, 0, intent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    // Make sure, there is no active Alarm
    alarmManager.cancel(pendingIntent);

    if(notificationEnabled) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.AM_PM, Calendar.PM);

        cal.set(Calendar.HOUR_OF_DAY, notificationHour);
        cal.set(Calendar.MINUTE, notificationMinute);
        cal.set(Calendar.SECOND, 0);


        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY,
                pendingIntent);
    }

}

现在我不知道为什么这行不通。 我曾经将警报设置为10:05,并且在晚上触发了警报。 该警报应每天在特定时间触发(当然,如果仅启用了警报)。 从当天开始。 因此,如果我将其设置为几分钟或几小时后,它也应该在今天和隔日运行,直到取消警报为止。#

提前致谢

我认为您从Calender获得了错误的Unixtimestamp。

尝试这个

// Set the alarm to start at approximately 2:00 p.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 14);

// With setInexactRepeating(), you have to use one of the AlarmManager interval
// constants--in this case, AlarmManager.INTERVAL_DAY.
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
        AlarmManager.INTERVAL_DAY, alarmIntent);

从Android Trainigs安排重复警报

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM