2015-05-14 105 views
4

在我的應用程序中,我使用CalendarContract API來管理Google日曆上的日曆和事件。將多個活動添加到單個日曆時遇到一些問題。一般來說,這種方法的問題是,每當我向Google日曆添加新事件時,舊事件將被新事件所替代。這裏是我的方法的代碼:無法在Google日曆中插入多個事件

public int addEvent(Context context, String color, int calendarId, String name, String location, String description, Date dateBegin, Date dateEnd) { 
      long startMillisEpoch; 
      long endMillisEpoch; 

      Calendar beginTime = Calendar.getInstance(); 
      beginTime.setTime(dateBegin); 
      startMillisEpoch = beginTime.getTimeInMillis(); 

      Calendar endTime = Calendar.getInstance(); 
      endTime.setTime(dateEnd); 
      endMillisEpoch = endTime.getTimeInMillis(); 

      int eventColor; 
      try { 
       eventColor = Color.parseColor(color); 
      } catch (Exception e) { 
       // Get a random color 
       Random random = new Random(); 
       eventColor = MyApp.RANDOM_COLORS[random.nextInt(MyApp.RANDOM_COLORS.length)]; 
      } 
      ContentValues values = new ContentValues(); 
      values.put(CalendarContract.Events.CALENDAR_ID, calendarId); 
      values.put(CalendarContract.Events.DTSTART, startMillisEpoch); 
      values.put(CalendarContract.Events.DTEND, endMillisEpoch); 
      values.put(CalendarContract.Events.TITLE, name); 
      values.put(CalendarContract.Events.EVENT_LOCATION, location); 
      values.put(CalendarContract.Events.DESCRIPTION, description); 
      values.put(CalendarContract.Events.EVENT_COLOR, eventColor); 
      // NOTE: Every event MUST have a timezone. Otherwise, 
      // the application will throw an IllegalArgumentException 
      values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName()); 
      // Put default values 
      values.put(CalendarContract.Events.ALL_DAY, NON_ALL_DAY); 
      values.put(CalendarContract.Events.GUESTS_CAN_INVITE_OTHERS, 1); 
      Uri calUri = context.getContentResolver().insert(CalendarContract.Events.CONTENT_URI, values); 
      if (calUri != null) { 
       try { 
        return Integer.parseInt(calUri.getLastPathSegment()); 
       } catch (Exception e) { 
        return -1; 
       } 
      } 
      return -1; 
     } 

解決這類問題的任何想法?親切的問候。

回答

1

根據API我猜你錯過.execute()

Uri calUri = context.getContentResolver() 
        .insert(CalendarContract.Events.CONTENT_URI, values) 
        .execute(); 

而且check this question

+0

對不起,我unexperience,但Uri類沒有任何方法 「執行」。首先感謝您的回答。 –

+0

你確定你需要使用'Uri'而不是'Event'嗎?你檢查過相關的api和問題嗎? –

+0

我使用CalendarContract來允許本地日曆。這就是我所需要的。 –