Я делаю андроид приложение сигнализации и установкой сигнализации с помощью кода ниже:AlarmManager не вызвать текущее время
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);
}
Все работает нормально, но проблема в том, когда я выбираю текущую дату, месяц, год, а также текущее время, оно отобразит «вы выбрали прошедшее время». Как решить эту проблему?
Вы делаете правильные вещи, уверены ли вы, что переменные, год1, месяц1 и т. Д. Верны? – GiuseppeLabanca
@GiuseppeLabanca Yup, я использую Toast для отображения, и он отображается правильно. Я не понимаю, почему он отобразит «Вы выбрали ...», если я выберу текущее время, а также текущую дату. –
Я думаю, что это из-за того, что до тех пор, пока код не достигнет инструкции 'if', прошло некоторое время. По крайней мере, в диапазоне миллисекунд. Таким образом, вы можете использовать другой объект календаря для 'rightNow', который инициализируется вместе с' alarm' и использовать его для сравнения внутри if. – Marat