将每周事件添加到日历?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

我想添加一个活动到本地Calendar,在这里我想重复每一个事件,Tuesday直到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在我的代码中使用了“ ”

还有一件事情,如果我还想给这个事件的持续时间,如:from 6:00 pm to 9:00 pm

提问于
用户回答回答于
@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);
 }
用户回答回答于

对于星期二,首字母缩写必须是所有大写,即。 TU

.putExtra(CalendarContract.Events.RRULE, "FREQ=WEEKLY;BYDAY=TU;UNTIL=20151231")

为了给你需要添加的事件提供持续时间

.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,getMillis(begintime))
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, getMillis(endtime))

扫码关注云+社区

领取腾讯云代金券