我使用以下代码将事件插入日历
public void setRemindar(String calenderDate, String endcalenderDate,
int customHour, int customMin, int endcustomHour, int endcustomMin,
String title) {
Uri EVENTS_URI = Uri
.parse(getCalendarUriBase(getActivity()) + "events");
ContentResolver cr = context.getContentResolver();
TimeZone timeZone = TimeZone.getDefault();
Calendar cal = Calendar.getInstance();
try {
eventDate = new SimpleDateFormat("MM/dd/yyyy").parse(calenderDate);
endEventDate = new SimpleDateFormat("MM/dd/yyyy")
.parse(endcalenderDate);
cal.setTime(eventDate);
cal.set(Calendar.HOUR_OF_DAY, customHour);
cal.set(Calendar.MINUTE, customMin);
startCalTime = cal.getTimeInMillis();
cal.setTime(endEventDate);
cal.set(Calendar.HOUR_OF_DAY, endcustomHour);
cal.set(Calendar.MINUTE, endcustomMin);
endCalTime = cal.getTimeInMillis();
// event insert
ContentValues values = new ContentValues();
values.put("calendar_id", 1);
values.put(CalendarContract.Events.TITLE, title);
values.put(CalendarContract.Events.DESCRIPTION, dateToPass);
values.put(CalendarContract.Events.EVENT_LOCATION, location);
values.put(CalendarContract.Events.DTSTART, startCalTime);
values.put(CalendarContract.Events.DTEND, endCalTime);
values.put(CalendarContract.Events.STATUS, 1);
values.put(CalendarContract.Events.HAS_ALARM, 1);
values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
Uri event = cr.insert(EVENTS_URI, values);
// reminder insert
Uri REMINDERS_URI = Uri.parse(getCalendarUriBase(getActivity())
+ "reminders");
values = new ContentValues();
values.put("event_id", Long.parseLong(event.getLastPathSegment()));
values.put("method", 1);
values.put("minutes", 5);
cr.insert(REMINDERS_URI, values);
} catch (Exception e) {
// TODO: handle exception
}
}
并且它在压光机中成功插入,但问题在于它不重复。 我想要的是假设活动开始日期是2014年9月13日,活动结束日期是2014年9月17日,那么它显示这两个日期之间的事件。现在我只能将活动设置为2014年9月13日。当我点击2014年9月13日的日历时,它会向我显示活动条目,但是当我点击9月14日它没有显示任何内容时。它必须在2014年9月13日至9月17日之间显示。 请帮我实现以下目标
答案 0 :(得分:0)
您需要指定 RRule (重复规则),以便在将其插入日历数据库时定义重复类型。这段代码适合我:
values.put(Events.RRULE, "FREQ=" + recurrence + ";UNTIL="
+ "This is timestamp value");
此处重复出现 DAILY ,每周,每月或年度所有大写字母。 如果这不起作用,请告诉我。