5

Google Calendar Api을 사용합니다.Android 캘린더 API 반복 일정 삽입

rfc2445을 탐색 한 후에도 일정에 대한 재발을 설정할 수 없습니다.

private String[] days = {"SU", "MO", "TU", "WE", "TH", "FR", "SA"}; 
private String rrule = "RRULE:FREQ=WEEKLY;WKST=MO;BYDAY="; 
private Event createdEvent; 
... 

Event event = new Event(); 
StringBuilder sb = new StringBuilder(); 
sb.append(rrule); 
sb.append(days[startTime.get(java.util.Calendar.DAY_OF_WEEK)-1]); 
event.setSummary("HELLO WORLD"); 
event.setLocation(""); 

DateTime start = new DateTime(startTime.getTime(), TimeZone.getTimeZone("UTC")); 
event.setStart(new EventDateTime().setDateTime(start)); 
DateTime end = new DateTime(endTime.getTime(), TimeZone.getTimeZone("UTC")); 
event.setEnd(new EventDateTime().setDateTime(end)); 

//Setting Recurrence 
ArrayList<String> recur = new ArrayList<String>(); 
recur.add(sb.toString()); 
event.setRecurrence(recur); 

createdEvent = cal.events().insert("primary", event).execute(); //line 167 

위의 코드를 실행 한 후, 나는이 오류가 발생하는 유지 (주의 : 내가 재발을 지정 생략하면 분명히이 이벤트가 단일 발생한다하더라도 모든 작품) : 수동

01-13 19:26:17.190: WARN/System.err(5732): com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request 
01-13 19:26:17.190: WARN/System.err(5732): { 
01-13 19:26:17.190: WARN/System.err(5732): "code" : 400, 
01-13 19:26:17.190: WARN/System.err(5732): "errors" : [ { 
01-13 19:26:17.190: WARN/System.err(5732):  "domain" : "global", 
01-13 19:26:17.190: WARN/System.err(5732):  "message" : "Required", 
01-13 19:26:17.190: WARN/System.err(5732):  "reason" : "required" 
01-13 19:26:17.190: WARN/System.err(5732): } ], 
01-13 19:26:17.190: WARN/System.err(5732): "message" : "Required" 
01-13 19:26:17.190: WARN/System.err(5732): } 
01-13 19:26:17.190: WARN/System.err(5732):  at com.google.api.client.googleapis.services.GoogleClient.execute(GoogleClient.java:123) 
01-13 19:26:17.190: WARN/System.err(5732):  at com.google.api.client.http.json.JsonHttpRequest.executeUnparsed(JsonHttpRequest.java:67) 
01-13 19:26:17.190: WARN/System.err(5732):  at com.google.api.services.calendar.Calendar$Events$Insert.execute(Calendar.java:2308) 
01-13 19:26:17.190: WARN/System.err(5732):  at com.example.myproject.className.run(className.java:167) 
01-13 19:26:17.190: WARN/System.err(5732):  at java.lang.Thread.run(Thread.java:1020) 

내가 캘린더에 반복 일정을 만들고 간단한 방법으로 읽습니다. 수행 할 때 event.getRecurrence. 재발은 "RRULE:FREQ=WEEKLY;WKST=MO;BYDAY=MO"으로, 내가 만든 이벤트는 매주 월요일에 반복됩니다.

어디에서 내가 잘못 될 수 있습니까?

편집 :

Google's Api Explorer를 사용하여, 나는 수동으로 재발 필드와 JSON을 생성하고 일했다.

event에서 생성되는 JSON을 로깅 한 후 시간대가 전달되지 않는 것으로 보입니다.

{end={dateTime=2012-01-16T09:50:00.000Z}, location=, recurrence=[RRULE:FREQ=WEEKLY;], start={dateTime=2012-01-16T09:00:00.000Z}, summary=HELLO WORLD} 

또한 수행 event.getStart().getTimeZone().toString()java.lang.NullPointerException 발생.

확실하지 그들은이 전달되지 않는 이유는 ...

답변

6

DateTime 개체에서 EventDateTime를 만들 때 하나 다시 시간대를 추가해야합니다 것 같다. 다음은 작동했습니다 :

DateTime start = new DateTime(startTime.getTime(), TimeZone.getTimeZone("UTC")); 
event.setStart(new EventDateTime().setDateTime(start).setTimeZone("UTC"); 
DateTime end = new DateTime(endTime.getTime(), TimeZone.getTimeZone("UTC")); 
event.setEnd(new EventDateTime().setDateTime(end).setTimeZone("UTC"); 
+0

그게 전부입니다. 감사! –