Android会在开始日期和结束日期之间向日历添加事件

时间:2014-09-13 09:59:08

标签: android

我使用以下代码将事件插入日历

  public void setRemindar(String calenderDate, String endcalenderDate,
              int customHour, int customMin, int endcustomHour, int endcustomMin,
              String title) {

          Uri EVENTS_URI = Uri
                 .parse(getCalendarUriBase(getActivity()) + "events");
             ContentResolver cr = context.getContentResolver();

         TimeZone timeZone = TimeZone.getDefault();
         Calendar cal = Calendar.getInstance();
         try {
              eventDate = new SimpleDateFormat("MM/dd/yyyy").parse(calenderDate);
              endEventDate = new SimpleDateFormat("MM/dd/yyyy")
                      .parse(endcalenderDate);

              cal.setTime(eventDate);
              cal.set(Calendar.HOUR_OF_DAY, customHour);
              cal.set(Calendar.MINUTE, customMin);
              startCalTime = cal.getTimeInMillis();

              cal.setTime(endEventDate);
              cal.set(Calendar.HOUR_OF_DAY, endcustomHour);
              cal.set(Calendar.MINUTE, endcustomMin);
              endCalTime = cal.getTimeInMillis();

             // event insert
                ContentValues values = new ContentValues();
                values.put("calendar_id", 1);
                values.put(CalendarContract.Events.TITLE, title);
                values.put(CalendarContract.Events.DESCRIPTION, dateToPass);
               values.put(CalendarContract.Events.EVENT_LOCATION, location);
               values.put(CalendarContract.Events.DTSTART, startCalTime);
               values.put(CalendarContract.Events.DTEND, endCalTime);
               values.put(CalendarContract.Events.STATUS, 1);
              values.put(CalendarContract.Events.HAS_ALARM, 1);
              values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());

              Uri event = cr.insert(EVENTS_URI, values);
              // reminder insert
               Uri REMINDERS_URI = Uri.parse(getCalendarUriBase(getActivity())
                     + "reminders");
              values = new ContentValues();
              values.put("event_id", Long.parseLong(event.getLastPathSegment()));
              values.put("method", 1);
              values.put("minutes", 5);
              cr.insert(REMINDERS_URI, values);
          } catch (Exception e) {
              // TODO: handle exception
                 }
      }

并且它在压光机中成功插入,但问题在于它不重复。 我想要的是假设活动开始日期是2014年9月13日,活动结束日期是2014年9月17日,那么它显示这两个日期之间的事件。现在我只能将活动设置为2014年9月13日。当我点击2014年9月13日的日历时,它会向我显示活动条目,但是当我点击9月14日它没有显示任何内容时。它必须在2014年9月13日至9月17日之间显示。 请帮我实现以下目标

1 个答案:

答案 0 :(得分:0)

您需要指定 RRule (重复规则),以便在将其插入日历数据库时定义重复类型。这段代码适合我:

values.put(Events.RRULE, "FREQ=" + recurrence + ";UNTIL="
                    + "This is timestamp value");

此处重复出现 DAILY 每周每月年度所有大写字母。 如果这不起作用,请告诉我。