这是我的警报管理器代码:

Intent intent=new Intent(getBaseContext(),AlarmReciever.class);
intent.setAction("com.example.projectx.ACTION");

PendingIntent pendingIntent=PendingIntent.getBroadcast(this,12345, intent,PendingIntent.FLAG_CANCEL_CURRENT);

AlarmManager alarmManager=(AlarmManager)getSystemService(Activity.ALARM_SERVICE);

alarmManager.set(AlarmManager.RTC_WAKEUP,targetCal.getTimeInMillis(),pendingIntent);

如果我选择在 future 的小时/分钟触发警报,则代码效果很好。但是如果我选择过去的一个小时/分钟,它会在我点击“设置闹钟”时立即启动。

例子:
  • 现在是15:00,我将闹钟设置为15:45,闹钟在15:45响起,一切正常
  • 现在是 15:00 ,我设置了 14:30 的闹钟,只要我点击“设置闹钟”,闹钟就会响起!

  • 我的时间选择器始终设置为 24 小时模式。这可能是个问题吗?

    谢谢!

    最佳答案

    当然可以......它的意思是这样工作。
    Android 识别出时间已经过去,因此它会发出警报,即使已经晚了。

    您可以确保为闹钟设置的时间晚于当前时间。
    只需计算这个差异:

    int diff = Calendar.getInstance().getTimeInMilis() - targetCal.getTimeInMillis();
    

    如果 diff 大于 0,则在日历中添加一天 (targetCal)
    现在,您设备的时间将比下一个预定的闹钟时间早 (而不是 )。

    10-06 13:36
    查看更多