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);
}
我制作了一个 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);
}