将每周活动添加到日历 [英] Add Weekly Event to Calendar
问题描述
我想向原生 Calendar
添加一个事件,在这里我想在每个 Tuesday
重复这个事件,直到 2015 年 12 月 31 日
:
I would like to add an event to native Calendar
, here i want to repeat this event on every Tuesday
until 31 December 2015
:
btnWeekly.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance();
Intent intent = new Intent(Intent.ACTION_INSERT)
.setData(Events.CONTENT_URI)
.setType("vnd.android.cursor.item/event")
.putExtra(Events.TITLE, "Tuesdays")
.putExtra(Events.DESCRIPTION, "Tuesday Specials")
.putExtra(Events.EVENT_LOCATION, "Lixious Bench")
.putExtra(Events.RRULE, "FREQ=WEEKLY;BYDAY=Tu;UNTIL=20151231")
.putExtra(Events.DTSTART, calendar.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true)
.putExtra(CalendarContract.Events.HAS_ALARM, 1)
.putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY);
startActivity(intent);
}
}
问题:在日历中它显示每个星期四
的这个事件,而我在我的代码中使用了tu
"
Problem: In Calendar it showing this event for every Thursday
, whereas i have used "tu
" in my code
还有一件事,如果我还想为此事件提供持续时间,例如:从 6:00 pm 到 9:00 pm
仅.
And one more thing what if i also want to give time duration for this event like: from 6:00 pm to 9:00 pm
only.
推荐答案
你说它显示星期四重复,但我得到的是星期四的开始日,每周二重复.所以我很确定 RRULE 部分是正确的.
You said it showed repeating for Thursday, but what I got was a start day of Thursday with a repeat every Tuesday. So I'm pretty sure the RRULE part is right.
我认为您所要做的就是使用 Calendar 设置实际开始和结束时间以获得正确的毫秒数,然后使用beginTime"而不是dtstart"和endTime"而不是dtend".
I think all you have to do is set the actual start and end times with Calendar to get the right milliseconds, then user "beginTime" instead of "dtstart" and "endTime" instead of "dtend".
@Override
public void onClick(View v) {
// If you want the start times to show up, you have to set them
Calendar calendar = Calendar.getInstance();
// Here we set a start time of Tuesday the 17th, 6pm
calendar.set(2015, Calendar.MARCH, 17, 18, 0, 0);
calendar.setTimeZone(TimeZone.getDefault());
long start = calendar.getTimeInMillis();
// add three hours in milliseconds to get end time of 9pm
long end = calendar.getTimeInMillis() + 3 * 60 * 60 * 1000;
Intent intent = new Intent(Intent.ACTION_INSERT)
.setData(Events.CONTENT_URI)
.setType("vnd.android.cursor.item/event")
.putExtra(Events.TITLE, "Tuesdays")
.putExtra(Events.DESCRIPTION, "Tuesday Specials")
.putExtra(Events.EVENT_LOCATION, "Lixious Bench")
.putExtra(Events.RRULE, "FREQ=WEEKLY;BYDAY=TU;UNTIL=20150428")
// to specify start time use "beginTime" instead of "dtstart"
//.putExtra(Events.DTSTART, calendar.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, start)
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end)
// if you want to go from 6pm to 9pm, don't specify all day
//.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true)
.putExtra(CalendarContract.Events.HAS_ALARM, 1)
.putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY);
startActivity(intent);
}
这篇关于将每周活动添加到日历的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!