android - 每天在特定时间设置重复闹钟

标签 android alarmmanager alarm

我尝试使用警报管理器在每天的特定时间运行警报。 我正在使用这段代码

Intent intent = new Intent(AlarmSettings.this, AlarmService.class);
                        intent.putExtra("i", i);
PendingIntent mAlarmSender = PendingIntent.getService(AlarmSettings.this, Id, intent, 0);

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),Calendar.getInstance().getTimeInMillis()+(24*60*60*1000), mAlarmSender);}

问题出在 如果 cal.getTimeInMillis() 的值是过去的,警报会立即运行,我不知道为什么,当 cal.getTimeInMillis() 的值是 future 的时候,它会在它的时间正确运行。

我需要让它在每天的特定时间运行。

最佳答案

// every day at 9 am
Calendar calendar = Calendar.getInstance();

// if it's after or equal 9 am schedule for next day
if (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) >= 9) {
    calendar.add(Calendar.DAY_OF_YEAR, 1); // add, not set!
}
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pi);

// alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(),
// AlarmManager.INTERVAL_DAY, pi);

关于android - 每天在特定时间设置重复闹钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938957/

相关文章:

java - Android Facebook sdk Session.OpenRequest(myFragment) 未定义?

android - AlarmManager 无法正常工作

android - 如何在android中的某些条件下在最近的sdk版本中重复通知?

java - AlarmManager 不会启动服务

android - 作为后台服务的报警服务

android - 找不到资源 - Theme.AppCompat.Light.DarkActionBar

java - 如何调试AndroidManifest.xml中的应用程序类问题?

android - Activity 开始但在屏幕关闭或锁定时不可见

android - AlarmManager 将闹钟设置为在精确时间而不是分数工作

android - fragment 或父 Activity 中的异步任务?