我正在使用AlarmManager来触发通知。我希望通知在早上10:30发出,每24小时重复一次。打开申请时我不想要通知。
我发布我的代码,主要问题是它在10点30分发出警报(如果电话时区是12小时)。我修改了这段代码,并且在10:30,1,4,7发出了警报。
请帮我解决问题,我试图从很长一段时间解决它。
代码:
Intent myIntent = new Intent(Splash.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(Splash.this,
0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar firingCal = Calendar.getInstance();
Calendar currentCal = Calendar.getInstance();
firingCal.set(Calendar.HOUR_OF_DAY, 10);
firingCal.set(Calendar.MINUTE, 30);
firingCal.set(Calendar.SECOND, 0);
long intendedTime = firingCal.getTimeInMillis();
long currentTime = currentCal.getTimeInMillis();
if (intendedTime >= currentTime) {
alarmManager.setRepeating(AlarmManager.RTC, intendedTime,
AlarmManager.INTERVAL_DAY, pendingIntent);
} else {
firingCal.add(Calendar.DAY_OF_MONTH, 1);
intendedTime = firingCal.getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC, intendedTime,
AlarmManager.INTERVAL_DAY, pendingIntent);
}
答案 0 :(得分:1)
尝试使用:
firingCal.set(Calendar.HOUR_OF_DAY, 10);
因为这是24小时表示法中的小时。
似乎你忘了在else语句中添加一天,因为if和else现在完全相同。