gpt4 book ai didi

android - AlarmManager 第二天不触发警报

转载 作者:行者123 更新时间:2023-11-29 17:43:54 25 4
gpt4 key购买 nike

我有一个闹钟管理器,我想每天早上 6 点触发它。我调用类通知,当应用程序首次启动时,它会在每天早上 6 点设置重复警报(重复)。

当用户在早上 6 点到 9 点安装(并首次运行该应用程序)时,警报管理器工作正常,但是如果用户在上午 9 点之后首次运行该应用程序,我应该添加一天和第二天早上 6 点拉响警报。在这样做时,(将日期更改为第二天),警报会在随机时间触发,大约晚上 10 点(这是一个巨大的差异)。这是我的代码”

    public notification(Context context) {

this.context=context;

Intent appstart=new Intent(context,appstartreceiver.class);
PendingIntent pi=PendingIntent.getBroadcast(context,0,appstart,PendingIntent.FLAG_UPDATE_CURRENT); // For appstart in the morning
AlarmManager alarmManager = (AlarmManager)context.getSystemService(context.ALARM_SERVICE);

Calendar currentCal=Calendar.getInstance();
Calendar startapp = Calendar.getInstance();// FOr app start in the morning

startapp.set(Calendar.HOUR_OF_DAY,6);
startapp.set(Calendar.MINUTE, 0);
startapp.set(Calendar.SECOND, 0);


long currentTime = currentCal.getTimeInMillis();


int diff=(int)(currentTime-startapp.getTimeInMillis())/(1000*60*60);

if (diff<3)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,startapp.getTimeInMillis(),1000*24*60*60,pi);
else {

startapp.add(Calendar.HOUR_OF_DAY, 24);


alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startapp.getTimeInMillis(), 1000 * 24 * 60 * 60, pi);
}

}

最佳答案

将您的代码替换为以下代码...这将在每天早上 6 点触发。它可能对您有所帮助。

public void notification(Context context) {

Intent intent = new Intent(this, appstartreceiver.class);

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 99, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 6);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

long startUpTime = calendar.getTimeInMillis();

// To avoid firing the alarm if the time is passed while setting
if (System.currentTimeMillis() > startUpTime) {
startUpTime = startUpTime + 24 * 60 * 60 * 1000;
}

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startUpTime, 24 * 60 * 60 * 1000, pendingIntent);
}

关于android - AlarmManager 第二天不触发警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27742005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com