我可以在当前日期设置事件和提醒,但是当我使用将来的日期时间戳在日历上设置未来事件时,它不会在将来的日期添加/显示任何事件。这是我添加未来日期事件的代码:
btnSetEvent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Date d1 = new Date(1472570400);//Tue, 30 Aug 2016 15:20:00 GMT
Calendar cal1 = Calendar.getInstance();
cal1.setTime(d1);
Date d2 = new Date(1472574000);//Tue, 30 Aug 2016 16:20:00 GMT
Calendar cal2 = Calendar.getInstance();
cal2.setTime(d2);
Uri EVENTS_URI = Uri.parse("content://com.android.calendar/events");
ContentResolver cr = getContentResolver();
// event insert
ContentValues values = new ContentValues();
values.put("calendar_id", 1);
values.put("title", "Reminder Title");
values.put("allDay", 0);
values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
values.put("dtstart", cal1.getTimeInMillis() ); // event starts at Tue, 30 Aug 2016 15:20:00
values.put("dtend", cal2.getTimeInMillis()); // ends at Tue, 30 Aug 2016 16:20:00 GMT
System.out.println("ALARM TIMES START : " + cal1.getTimeInMillis());
System.out.println("ALARM TIMES END : "+cal2.getTimeInMillis());
values.put("description", "Reminder description");
values.put("hasAlarm", 1);
Uri event = cr.insert(EVENTS_URI, values);
// reminder insert
Uri REMINDERS_URI = Uri.parse("content://com.android.calendar/reminders");
values = new ContentValues();
values.put( "event_id", Long.parseLong(event.getLastPathSegment()));
values.put( "method", 1);
values.put( "minutes", 1); //Notify before the exact time
cr.insert( REMINDERS_URI, values );
}
});
}
提前致谢。
答案 0 :(得分:2)
这是因为您的输入日期很长。我调试它们,他们显示1970年1月16日,而不是2016年8月30日。
您不需要使用Date
课程。只需致电:
Calendar cal1 = new GregorianCalendar(2016, Calendar.AUGUST, 30, 15, 20);
Calendar cal2 = new GregorianCalendar(2016, Calendar.AUGUST, 30, 16, 20);
如果您有长值,也可以拨打cal1.setTimeInMillis(millis)
。