忽略这样的事实,即有多个应用程序可以做到这一点(作为免责声明,我已经发布了一个完全适用于that的应用程序),我就是这么做的。
简单的步骤:
设置闹钟当您收到一个报警抢唤醒锁
锻炼,如果任何生日会今天发生唤醒设备每天一次
如果是发送/排队等
设置报警是明天 消息
您还需要重新启动设备,因为设备重新引导时任何警报都将被销毁。在这种情况下,只是有意向的BOOT_COMPLETED呼叫到上面的步骤在第2
我报警代码:
long alarmTime = System.currentTimeMillis()+(24*60*60*1000);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
Intent intent = new Intent(".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(".WAKEUP_ALARM");
intent.putExtra("DatabaseKey", 1);
发送消息自动要求你有SEND_SMS许可,您发送短信在后台 - 像这样stackoverflow answer