在Android日历中插入重复活动

时间:2012-01-01 20:50:58

标签: android events recurring

我有一个我无法解决的问题。我设法将我的事件插入到我的安卓日历中,但我想让它们反复出现。例如生日。我希望他们每年重复一次。我有这段代码:

    final ContentResolver cr = ctx.getContentResolver();
    ContentValues cv = new ContentValues();
    cv.put("calendar_id", calIds[0]);
    cv.put("title", title);

    cv.put("rrule", "FREQ=YEARLY");
    cv.put("description", comment );
    Calendar start = Calendar.getInstance();
    start.set(2012, 0, 2, 8, 0, 0);

    Calendar end = Calendar.getInstance();
    end.set(2012, 0, 2, 9, 0, 0);

    long startTime = start.getTimeInMillis();       
    long endTime = end.getTimeInMillis();

    cv.put("dtstart", startTime);
    cv.put("dtend", endTime);
    //Insertion on the events of the calendar
    cr.insert(Uri.parse("content://com.android.calendar/events"), cv);

它会插入我的事件,但它不会重复出现。我的意思是我的活动出现在2jan2012但是在2jan2013上没有,2014年也没有,依此类推。所以我在手机上打开了我的日历,并试图编辑我的活动,我看到我应该选择它的出现位置,它显示“在2012年1月2日”而不是“1月2日”,因为它应该是自定义我手机上的活动。另一方面,如果我尝试从手机手动添加事件,它可以正常工作(我的意思是我可以添加每年发生的事件)。 我注意到的另一件事是,如果我改变年份,例如我把2010年而不是2012年,它每年都会插入我的活动直到我当前的日期。更确切地说,它在2jan2010上插入一个事件,在2jan2011上播放另一个事件,在2jan2012上插入一个事件(今天是2012年1月2日),在此日期之后没有为此日期插入更多事件。 有没有人遇到过这类问题?欢迎任何帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

从听起来来看,您尝试添加的任何事件都不会超过当前日期。

使用日历,手动插入具有特定标题(例如“测试”)的年度/每月/每周事件,该事件将在当前日期之后重复。然后编写一个简单的方法来读取当前日历中的事件。检查标题“测试”并记录该事件的ContentValues内容 - 看看是否可以发现任何差异。

答案 1 :(得分:0)

当ContentValues是一个反复出现的事件时,将'duration'放入'dtend'而不是'dtend'。

请参阅https://stackoverflow.com/a/13839548/3629966