1

我正在构建一个提醒应用程序,用户在其中将事件输入 SQLite DB。主屏幕列出了每个提醒的标题,单击一个项目会显示它的详细信息。所有这一切都很好。

现在我想允许用户为每个项目设置通知,可以选择在活动安排前 15 分钟、30 分钟或 1 小时设置提醒。

我不知道如何去做,也找不到任何好的教程。谁能给我一些关于如何实现它的想法?

谢谢!

4

3 回答 3

2

使用AlaramManager触发广播,告诉您的应用程序向用户显示有关事件的通知。

下面是一个使用它的例子:Alarm Manager Example

于 2012-11-08T14:40:35.303 回答
2

从数据库中获取事件的日期后,它就像任何其他通知一样简单,只需记住您要减去日期的时间量(15、30、60 分钟)。

Timer timer = new Timer();
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:mm");
Date date = formatter.parse("11/08/2012 16:39");
timer.schedule(timerTask, date);

这会将活动安排到活动时间,我知道您希望在活动实际发生之前得到提醒。为此,您可以创建一个日历对象以您需要的方式修改日期。请记住删除之前的日程安排,否则您将收到两个提醒(一次提醒,另一个作为提醒)。

Calendar cal = Calendar.getInstance();
         cal.setTime(date);
         cal.add(Calendar.MINUTE, -15);//Or whatever
//Then schedule it.
time.schedule(timerTask,cal.getTime());

timerTask两种方法都使用可能是这样的变量,涉及createNotification实际上将创建待处理通知的方法调用。

TimerTask timerTask = new TimerTask(){
   @Override
   public void run(){
       createNotification(title,  text,  tickerText,  millisec);
   }
};

你有一个潜在的问题。如果应用程序已关闭,我相信计时器会随之消失,因此根据您的应用程序的性质,您可能希望AlarmManager按照其他人的建议使用。

于 2012-11-08T14:40:40.097 回答
1

您将使用 AlarmManager 设置要在特定日期/时间触发的操作。(有很多关于如何使用 AlarmManager 的教程)

警报管理器事件总是触发 PendingIntent。根据这个意图,您可以进行广播或启动服务。(您必须创建广播接收器或服务)

然后在广播接收器或服务上建立并显示通知。

我建议使用广播接收器路由,它更干净,更无缝。您可能还需要一个用于 onBoot 事件的广播接收器,以便在用户重新启动设备的情况下重新安排警报管理器上的事件。

于 2012-11-08T14:41:59.607 回答