AlarmManager 不触发当前时间

AlarmManager not trigger current time

我制作了一个 android 闹钟应用程序并使用以下代码设置闹钟:

Calendar alarm = Calendar.getInstance();
alarm.set(Calendar.YEAR, year1);
alarm.set(Calendar.MONTH, month1);
alarm.set(Calendar.DAY_OF_MONTH, day1);
alarm.set(Calendar.HOUR_OF_DAY, hour1);
alarm.set(Calendar.MINUTE, min1);
alarm.set(Calendar.SECOND, 0);

if(alarm.before(Calendar.getInstance()))
{
    alarm.add(Calendar.DATE, 1);
    Toast.makeText(getActivity(),"You selected the past time",Toast.LENGTH_SHORT).show();
}
else
{        
    Intent myIntent = new Intent(getActivity(), MyReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
    AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC, alarm.getTimeInMillis(), pendingIntent);
}

一切正常,但问题是当我 select 当前日期、月份、年份以及当前时间时,它会显示 "you selected the past time"。如何解决这个问题呢?

试试这个。希望能解决你的问题。

Calendar alarm = Calendar.getInstance();
Calendar copy = (Calendar) alarm.clone();

alarm.set(Calendar.YEAR, year1);
alarm.set(Calendar.MONTH, month1);
alarm.set(Calendar.DAY_OF_MONTH, day1);
alarm.set(Calendar.HOUR_OF_DAY, hour1);
alarm.set(Calendar.MINUTE, min1);

int result = alarm.compareTo(copy);

if (result == 0) 
{
    Toast.makeText(getActivity(), "You selected current time", Toast.LENGTH_SHORT).show();
}
else if (result < 0)
{
    alarm.add(Calendar.DATE, 1);
    Toast.makeText(getActivity(), "You selected the past time", Toast.LENGTH_SHORT).show();
}
else
{        
    Intent myIntent = new Intent(getActivity(), MyReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
    AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC, alarm.getTimeInMillis(), pendingIntent);
}