android - 如何在android中设置多个闹钟

标签 android

我想创建一个生日提醒应用。我在数据库中保存了人名、出生日期和生日信息。我想在那个日期自动发送消息。 任何人都可以提出一个想法来做到这一点。这里可以使用共享偏好吗?是否可以在特定日期将特定 ID 传递到数据库,以便向他所在 DOB 的人发送问候。 在这种情况下,任何人都可以提出一个处理多个警报的想法。

最佳答案

忽略已经有多个应用程序可以执行此操作的事实(作为免责声明,我已经发布了一个完全执行 that 的应用程序),这就是我的做法。

简单的步骤:

  1. 设置闹钟以每天唤醒设备一次
  2. 当您收到警报时捕获唤醒锁
  3. 算出今天是否有生日
  4. 如果是,发送/排队消息等
  5. 设置明天的闹钟

您还需要捕捉设备的重启,因为设备重启时所有警报都将被销毁。在这种情况下,只需将 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/

相关文章:

java - 无法解析复杂的 json

java - 在 RecyclerView 中我想要 onclicklistener 操作

android:替换 CoordinatorLayout 内的 fragment 容器

android - 无法使用日期和时间选择器库

android - 布局_大型 Android 工作室

android - doinbackground 期间内存不足

android - 日期格式在 Android 中不起作用?

android - 是否可以使用 Dexmaker 覆盖现有类中的方法?

java - C# Tcp 客户端无法向 android 服务器发送消息

android - 当应用程序在 android 中退出或关闭时,我可以调试服务吗