Android如何根据sqlite数据库中设置的时间设置警报?

Android如何根据sqlite数据库中设置的时间设置警报?,android,alarmmanager,time-format,Android,Alarmmanager,Time Format,我有一个从web服务接收数据的应用程序,名为tasks,然后将任务保存到我的SQLite数据库中。我接下来要做的是查询这些任务,然后根据它们被设置为触发的时间设置警报。假设我有一个任务名“feed”,并且要触发的任务时间是'09:00am'(我的时间使用'h:ia'格式)。如何将此时间格式转换为alarmManager可以读取的格式 public void setAlarm(int uniqueid, int duration) { Intent intent = new Intent(

我有一个从web服务接收数据的应用程序,名为tasks,然后将任务保存到我的SQLite数据库中。我接下来要做的是查询这些任务,然后根据它们被设置为触发的时间设置警报。假设我有一个任务名“feed”,并且要触发的任务时间是'09:00am'(我的时间使用'h:ia'格式)。如何将此时间格式转换为alarmManager可以读取的格式

public void setAlarm(int uniqueid, int duration) {
    Intent intent = new Intent(this, AlarmReceiver.class);
    intent.setAction(AlarmReceiver.ACTION_ALARM_RECEIVER);//my custom string action name
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, uniqueid, intent, 0);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
            + (duration * 1000), pendingIntent);
    Toast.makeText(this, "Alarm set for " + uniqueid, Toast.LENGTH_LONG).show();
}


使用毫秒。

试试这个,看看它是否适合你

Date mDate = new Date();
Calendar mCalendar = Calendar.getInstance();
mCalendar.setTime(mDate);
mCalendar.add(Calendar.MINUTE, 2);

long alarmInTwoMinutes = mCalendar.getTimeInMillis();

alarmManager.set(AlarmManager.RTC_WAKEUP, alarmInTwoMinutes, pendingIntent);
在特定时间更新到设置

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 30);

long alarmInTwoMinutes = calendar.getTimeInMillis();
对于重复,您可以使用

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmInTwoMinutes, pendingIntent)

它可以工作,但设置后会被直接接收..就像我在两分钟后设置闹钟一样。设置后,将在所需时间之前立即完成。这是一行:alarmManager.set(alarmManager.RTC_WAKEUP,毫秒,PendingEvent)@Renboy是的,现在是您触发警报的时候了,请阅读Android AlarmManager的工作原理:如果我想在特定时间从计时器触发警报,该怎么办?像“09:30 AM”?是每天这个时候重复还是一次触发?
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmInTwoMinutes, pendingIntent)