gpt4 book ai didi

android - 使用 AlarmManager 每天发送 Intent?

转载 作者:行者123 更新时间:2023-11-29 14:53:59 25 4
gpt4 key购买 nike

我想要以下内容:

  • AlarmManager 在午夜准时向我的 AppWidgetProvider 发送每日 Intent 。
  • 闹钟必须唤醒设备。

这是我的做法:

在我的 AppWidgetProvider 子类中:

@Override
public void onEnabled(Context context) {
super.onEnabled(context);
Log.d(LOG_TAG, "Widget Provider enabled. Starting timer");

//Setting the Calender object to midnight time.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 0);
calendar.add(Calendar.MINUTE, 0);
calendar.add(Calendar.HOUR, 0);

//The fired Intent
Intent intent = new Intent(CLOCK_WIDGET_UPDATE); //custom intent name
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), 1000*60*60*24, pendingIntent);
}

虽然我认为我做对了,但这段代码不起作用!

为了测试它,我将 1000*60*60*24 更改为 10000(10 秒),并使用随机数更新了小部件中的 textView。随机数从未改变。

任何帮助将不胜感激!

最佳答案

终于找到问题了!

看来我需要设置 AM_PM值(value)太。当我使用 getTime().toLocaleString() 打印日历时,它被设置为第二天,但 12 小时后(12:00:00 PM)。

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.AM_PM, Calendar.AM);
calendar.add(Calendar.DAY_OF_MONTH, 1);

这是 Calender 的完美设置将闹钟设置为第二天午夜(即最近的午夜)的实例。您只需将其传递给 setRepeating()方法。

感谢@CommonsWare

关于android - 使用 AlarmManager 每天发送 Intent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10857681/

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