2011-10-15 45 views
1

我想创建一个生日提醒应用程序。我将个人姓名,出生日期和生日信息保存在数据库中。我想在该日期自动发送消息。 任何人都可以提出一个想法来做到这一点。这里可以使用共享偏好吗?可以将特定的ID在特定的日期传递给数据库,以便向其DOB上的人发送问候语。 任何人都可以请建议一个想法来处理在这种情况下的多个警报。如何在android中设置多个闹钟

回答

4

忽略这样的事实,即有多个应用程序可以做到这一点(作为免责声明,我已经发布了一个完全适用于that的应用程序),我就是这么做的。

简单的步骤:

  1. 设置闹钟当您收到一个报警抢唤醒锁
  2. 锻炼,如果任何生日会今天
  3. 发生唤醒设备每天一次
  4. 如果是发送/排队等
  5. 设置报警是明天
消息

您还需要重新启动设备,因为设备重新引导时任何警报都将被销毁。在这种情况下,只是有意向的BOOT_COMPLETED呼叫到上面的步骤在第2

我报警代码:

long alarmTime = System.currentTimeMillis()+(24*60*60*1000); 
AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE); 
Intent intent = new Intent("<package name>.WAKEUP_ALARM"); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent); 

其实我每一天在指定固定时间点,说上午05点左右醒了设备,并计算出当天可能需要完成的工作,但这相对容易处理(并且出于其他原因在我的应用的其他地方发生)。

虽然您可以为下一年的所有生日设置闹钟,但是当设备重新启动并且用户更改了任何设备时,您可能必须将闹钟丢掉,这是浪费时间。

如果你真的想通过报警来传递数据库ID简单地把它添加到意图:(?假设SMS消息)

Intent intent = new Intent("<package name>.WAKEUP_ALARM"); 
intent.putExtra("DatabaseKey", 1); 

发送消息自动要求你有SEND_SMS许可,您发送短信在后台 - 像这样stackoverflow answer

+0

嗨,感谢您的评论。你能否说多个报警是否可以保存在待处理的意图中?或者说,我们一次只能设置一个闹钟,然后如果只有一个闹钟,我们可以设置其他闹钟。所有警报是否在未决意图队列中?你可以帮我吗。 – Matthew

+1

您可以指定多个警报(如果您将来要处理一天或两天以上的事件,这是一个非常糟糕的主意),但是您需要使用上面的代码来设置警报的时间和时间不同这个位“PendingIntent.getBroadcast(context,0,intent)”为每个要检索的警报更改0,否则最终将检索相同的未决意图。由于警报距离太远,您可以不保证他们会触发它,只有一个警报,然后设置更多的警报会更有效率。 – zeetoobiker