Eli*_*eth 7 android google-calendar-api calendarcontract
在谷歌日历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);
}
Run Code Online (Sandbox Code Playgroud)
如果我没看错的话,你想要一个日历项目,每树月一整天。您尝试过添加这一行吗?
contentValues.put(CalendarContract.EXTRA_EVENT_ALL_DAY, true);
Run Code Online (Sandbox Code Playgroud)
并将一个日历项目的结束日期更改为当前设置为年底,而这应该是当前项目的结束日期。DTEND 是当前项目的结束 DURATION 是重复出现模式的结束。
如果我对问题的理解有误,请给我详细的描述。对于 CalenderContracts 中的所有选项,请检查此链接。
编辑:
您希望每天都有一个日历约会,但每三个月提醒用户一次。使用您的代码,目前这是不可能的,因为您正在为具有该 id 的每个日历项目添加提醒(因此每天)。我能想到的唯一简单的解决方案是使用另一个 ID 创建一个单独的约会,每三个月重复一次,并使用提醒和不同的 ID。目前无法为某些具有相同 ID 的事件设置警报,而另一些则不然。
| 归档时间: |
|
| 查看次数: |
1709 次 |
| 最近记录: |