将每周事件添加到日历 [英] Add Weekly Event to Calendar

查看:26
本文介绍了将每周事件添加到日历的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想向原生 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);
    }                               
}

问题:在日历中它为每个 Thursday 显示此事件,而我在我的代码中使用了tu"

Problem: In Calendar it showing this event for every Thursday, whereas i have used "tu" in my code

还有一件事,如果我还想为这个事件提供持续时间,例如:从下午 6:00 到晚上 9:00.

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.

我认为您所要做的就是使用日历设置实际的开始和结束时间以获得正确的毫秒数,然后使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆