我想创建一个生日提醒应用。我在数据库中保存了人名、出生日期和生日信息。我想在那个日期自动发送消息。 任何人都可以提出一个想法来做到这一点。这里可以使用共享偏好吗?是否可以在特定日期将特定 ID 传递到数据库,以便向他所在 DOB 的人发送问候。 在这种情况下,任何人都可以提出一个处理多个警报的想法。
最佳答案
忽略已经有多个应用程序可以执行此操作的事实(作为免责声明,我已经发布了一个完全执行 that 的应用程序),这就是我的做法。
简单的步骤:
- 设置闹钟以每天唤醒设备一次
- 当您收到警报时捕获唤醒锁
- 算出今天是否有生日
- 如果是,发送/排队消息等
- 设置明天的闹钟
您还需要捕捉设备的重启,因为设备重启时所有警报都将被销毁。在这种情况下,只需将 BOOT_COMPLETED 的 Intent 调用到上述第 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);
我实际上每天指定一个固定的时间点,比如早上 5 点左右唤醒设备并确定当天可能需要做的事情,但这相对容易处理(并且由于其他原因在我的应用程序的其他地方发生).
虽然您可以为明年的所有生日设置闹钟,但这是浪费时间,因为当设备重新启动时所有闹钟都会被删除,如果用户更改任何内容,您可能不得不将闹钟扔掉。
如果您真的想通过警报传递数据库 ID,只需将其添加到 Intent 中即可:
Intent intent = new Intent("<package name>.WAKEUP_ALARM");
intent.putExtra("DatabaseKey", 1);
发送消息(假设是 SMS 消息?)自动要求您具有 SEND_SMS 权限,并且您在后台发送 SMS 消息 - 就像这个 stackoverflow answer
关于android - 如何在android中设置多个闹钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7780594/