Я создаю приложение, которое использует TimePicker, в котором пользователь устанавливает время, когда они хотят, чтобы SMS было отправлено на указанный номер. У них также есть возможность нажать «Повторить», чтобы SMS-сообщения продолжали отправляться в одно и то же указанное время каждый день.
Моя проблема в том, что он просто отключается сразу после того, как я установил таймер вместо ожидания. Я много раз пытался возиться с интервалами, но логически кажется, что он должен работать как есть, но это не так.
Вот код для получения времени из окна выбора времени и настройки AlarmManger:
Button setSchedule = (Button) setTimer.findViewById(R.id.setSchedule);
setSchedule.setText("Set");
setSchedule.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
hours = timePicker.getCurrentHour();
minutes = timePicker.getCurrentMinute();
minutesConv += hours * 60;
minutes += minutesConv;
seconds = minutes * 60;
time = seconds * 1000;
long currentTime = System.currentTimeMillis();
CheckBox repeat = (CheckBox) setTimer.findViewById(R.id.repeat);
Intent intentAlarm = new Intent(MainMenu.this, AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(MainMenu.this, 0, intentAlarm, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
if (repeat.isChecked())
{
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time - currentTime, AlarmManager.INTERVAL_DAY, pi);
}//end if
else
{
alarmManager.set(AlarmManager.RTC_WAKEUP, time - currentTime, PendingIntent.getBroadcast(MainMenu.this, 1, intentAlarm,
PendingIntent.FLAG_UPDATE_CURRENT));
}//end else
Toast.makeText(MainMenu.this, "Your message has been scheduled to be repeated at " +
hours + ":" + minutes, Toast.LENGTH_SHORT).show();
setTimer.dismiss();
}//end onClick
});
РЕДАКТИРОВАТЬ:
Calendar cal = Calendar.getInstance();
Calendar current = Calendar.getInstance();
cal.set(0, 0, 0, timePicker.getCurrentHour(), timePicker.getCurrentMinute(), 00);
Toast.makeText(MainMenu.this, "time: " + cal.getTimeInMillis(), Toast.LENGTH_SHORT).show();
CheckBox repeat = (CheckBox) setTimer.findViewById(R.id.repeat);
Intent intentAlarm = new Intent(MainMenu.this, AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(MainMenu.this, 0, intentAlarm, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
if (repeat.isChecked())
{
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pi);
}//end if
else
{
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), PendingIntent.getBroadcast(MainMenu.this, 1, intentAlarm,
PendingIntent.FLAG_UPDATE_CURRENT));
}//end else