我使用Android中的AlarmManager編碼鬧鐘。 我想在特定的日期和時間設置它。爲了檢查它是否工作,我在今天的日期(2017年1月9日)嘗試了代碼。 問題是警報沒有被觸發。相反,如果我改變Calendar.DAY_OF_MONTH 8而不是9,它的作品,彷彿從DAY_OF_MONTH開始0一樣的Calendar.MONTH,但我知道它不會啓動從0在一天前觸發的特定日期和時間的Android AlarmManager
這是怎麼回事?這裏是我的報警代碼:
private class AppointmentAlarmSetter extends AsyncTask<String, Void, Boolean>
{
@Override
protected Boolean doInBackground(String... strings)
{
// The Alarm's Request Code
int currentID = Constants.APPOINTMENT_ALARM_ID;
// Start setting the alarm for current appointment
Intent alarmIntent = new Intent(context, AlarmBroadcastReceiver.class);
// put the RequestCode ID as intent's extra, in order to identify which alarm is triggered
alarmIntent.putExtra("request_code", currentID);
PendingIntent pendingIntent = PendingIntent.getBroadcast
(
context.getApplicationContext(),
currentID,
alarmIntent,
PendingIntent.FLAG_CANCEL_CURRENT
);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
// Specify the date/time to trigger the alarm
calendar.set(Calendar.YEAR, 2017);
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 9);
calendar.set(Calendar.HOUR_OF_DAY, 14);
calendar.set(Calendar.MINUTE, 16);
calendar.set(Calendar.SECOND, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
// Set the exact time to trigger the alarm
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
return true;
}
}
愚蠢的問題,但我更願意知道...你的設備日期確定嗎? – ChristopheCVB
是的,在我編譯代碼的移動設備和PC中,日期都是正確的。 – Ciammarica