Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带AlarmManager.INTERVAL\u DAY标志的AlarmManager在当天执行,而不是在第二天执行_Android_Push Notification_Alarmmanager_Android Alarms - Fatal编程技术网

Android 带AlarmManager.INTERVAL\u DAY标志的AlarmManager在当天执行,而不是在第二天执行

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

我需要在我的Android应用程序中添加推送通知。通知必须在每天的特定时间(例如下午1点)显示。为此,我使用AlarmManager。当应用程序第一次启动时,我正在注册一个警报。但我有个问题。 如果我正在设备上安装我的应用程序,例如在下午1:10,则警报会在我的应用程序启动后立即运行。但这是错误的,因为我需要这个闹钟在第二天运行,而不是在今天。有谁能帮我告诉我如何设置每日警报,该警报必须从当天开始工作

这是我的代码,我现在正在使用

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()