在Google日历Android中为开始日期和结束日期之间的所有日期添加事件。我希望每3个月剩余一次,直到结束日期。 这是我的功能
public void addEvent1(Context ctx, String title){
SimpleDateFormat df2 = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat df3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", java.util.Locale.getDefault());
Date Startdate = null;
Date Enddate =null;
String dtStart = date.getText().toString();
try {
Startdate = df2.parse(dtStart);
Enddate = df2.parse(stringMaturityDate);
Log.v("SDate: ",""+ df3.format(Startdate));
Log.v("EDate: ",""+ df3.format(Enddate));
} catch(ParseException e){
e.printStackTrace();
}
Calendar cali = Calendar.getInstance();
cali.setTime(Startdate);
Calendar cali2 = Calendar.getInstance();
cali2.setTime(Enddate);
SimpleDateFormat yyyymmdd = new SimpleDateFormat("yyyyMMdd");
Calendar dt = Calendar.getInstance();
dt.setTime(Enddate);
String dtUntill = yyyymmdd.format(dt.getTime());
ContentResolver contentResolver = ctx.getContentResolver();
ContentValues calEvent = new ContentValues();
calEvent.put(CalendarContract.Events.CALENDAR_ID, 1); // XXX pick)
calEvent.put(CalendarContract.Events.TITLE, title);
calEvent.put(CalendarContract.Events.RRULE, "FREQ=MONTHLY;INTERVAL=3;UNTIL=" + dtUntill);
calEvent.put(CalendarContract.Events.DTSTART, cali.getTimeInMillis());
calEvent.put(CalendarContract.Events.DTEND, cali2.getTimeInMillis());
calEvent.put(CalendarContract.Events.EVENT_TIMEZONE, "" + java.util.Locale.getDefault());
Uri uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, calEvent);
int id = Integer.parseInt(uri.getLastPathSegment());
Toast.makeText(ctx, "Created Calendar Event " + id,
Toast.LENGTH_SHORT).show();
ContentValues reminders = new ContentValues();
reminders.put(CalendarContract.Reminders.EVENT_ID, id);
reminders.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT);
reminders.put(CalendarContract.Reminders.MINUTES, 10);
Uri uri1 = contentResolver.insert(CalendarContract.Reminders.CONTENT_URI, reminders);
}
答案 0 :(得分:3)
如果我正确地阅读了所有内容,那么您每个树需要一个日历项目一整天。您是否尝试过添加此行?
contentValues.put(CalendarContract.EXTRA_EVENT_ALL_DAY, true);
并且将一个日历项目的结束日期更改为当年年底,而这应该是当前项目的结束日期。 DTEND是当前项目的结尾DURATION是reoccuring patern的结束。
如果我理解错误的问题,请给我详细说明。对于CalenderContracts中的所有选项,请选中this link。
修改强>
您希望每天预约一次,但每三个月会提醒一次用户。使用您的代码时,目前无法进行此操作,因为您要为每个具有该ID的日历项目添加提醒(因此对于每天)。只有简单的解决方案,我能想到的是创建一个单独的约会与另一个ID,你每三个月重复一次提醒和不同的ID。目前无法为具有相同ID但某些事件的某些事件设置警报。