Android 带AlarmManager.INTERVAL\u DAY标志的AlarmManager在当天执行,而不是在第二天执行
我需要在我的Android应用程序中添加推送通知。通知必须在每天的特定时间(例如下午1点)显示。为此,我使用AlarmManager。当应用程序第一次启动时,我正在注册一个警报。但我有个问题。 如果我正在设备上安装我的应用程序,例如在下午1:10,则警报会在我的应用程序启动后立即运行。但这是错误的,因为我需要这个闹钟在第二天运行,而不是在今天。有谁能帮我告诉我如何设置每日警报,该警报必须从当天开始工作 这是我的代码,我现在正在使用Android 带AlarmManager.INTERVAL\u DAY标志的AlarmManager在当天执行,而不是在第二天执行,android,push-notification,alarmmanager,android-alarms,Android,Push Notification,Alarmmanager,Android Alarms,我需要在我的Android应用程序中添加推送通知。通知必须在每天的特定时间(例如下午1点)显示。为此,我使用AlarmManager。当应用程序第一次启动时,我正在注册一个警报。但我有个问题。 如果我正在设备上安装我的应用程序,例如在下午1:10,则警报会在我的应用程序启动后立即运行。但这是错误的,因为我需要这个闹钟在第二天运行,而不是在今天。有谁能帮我告诉我如何设置每日警报,该警报必须从当天开始工作 这是我的代码,我现在正在使用 private void registerAMAlarmMang
private void registerAMAlarmManger(){
mAMAlarmIntent = new Intent(this, AMAlarmReceiver.class);
mAMPendingIntent = PendingIntent.getBroadcast(this, 0, mAMAlarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
SharedPreferences sPrefs = getSharedPreferences(Constants.PREFERENCES_NAME, Context.MODE_PRIVATE);
int amTime = sPrefs.getInt(Constants.MORNING_TIME, 9);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, amTime);
calendar.set(Calendar.MINUTE, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, mAMPendingIntent);
}
如果当前日期的时间已过,则执行执行报警的代码。这需要处理。我是这样做的
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, mytesthourofday);
calendar.set(Calendar.MINUTE,
Integer.parseInt(min_am_pm[0]));
// calendar.set(Calendar.AM_PM, am_pm_integer);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
if (calendar.getTimeInMillis() < System.currentTimeMillis()) {
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), 1000 * 24 * 60 * 60,
pendingIntent);
Calendar Calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(calendar.HOUR\u OF_DAY,mytesthourofday);
calendar.set(calendar.MINUTE,
整数.parseInt(min_am_pm[0]);
//calendar.set(calendar.AM\u PM,AM\u PM\u整数);
calendar.set(calendar.SECOND,0);
calendar.set(calendar.毫秒,0);
if(calendar.getTimeMillis()
如果当前日期的时间已过,它将执行执行报警的代码。这需要处理。我是这样做的
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, mytesthourofday);
calendar.set(Calendar.MINUTE,
Integer.parseInt(min_am_pm[0]));
// calendar.set(Calendar.AM_PM, am_pm_integer);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
if (calendar.getTimeInMillis() < System.currentTimeMillis()) {
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), 1000 * 24 * 60 * 60,
pendingIntent);
Calendar Calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(calendar.HOUR\u OF_DAY,mytesthourofday);
calendar.set(calendar.MINUTE,
整数.parseInt(min_am_pm[0]);
//calendar.set(calendar.AM\u PM,AM\u PM\u整数);
calendar.set(calendar.SECOND,0);
calendar.set(calendar.毫秒,0);
if(calendar.getTimeMillis()
Calendar Calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(calendar.HOUR\u OF_DAY,mytesthourofday);
calendar.set(calendar.MINUTE,
整数.parseInt(min_am_pm[0]);
//calendar.set(calendar.AM\u PM,AM\u PM\u整数);
calendar.set(calendar.SECOND,0);
calendar.set(calendar.毫秒,0);
if(calendar.getTimeMillis()
Calendar Calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(calendar.HOUR\u OF_DAY,mytesthourofday);
calendar.set(calendar.MINUTE,
整数.parseInt(min_am_pm[0]);
//calendar.set(calendar.AM\u PM,AM\u PM\u整数);
calendar.set(calendar.SECOND,0);
calendar.set(calendar.毫秒,0);
if(calendar.getTimeMillis()
谢谢您的回答。我想澄清一下这部分代码“if(calendar.gettimemillis()