5

Sử dụng Google Calendar Api.Chèn lịch API sự kiện định kỳ

Sau khi duyệt qua rfc2445, tôi vẫn không thể đặt lặp lại trên sự kiện.

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 

Sau khi chạy đoạn code trên, tôi tiếp tục nhận được lỗi này (NB: mọi thứ hoạt động nếu tôi bỏ đi những quy định cụ thể tái phát, mặc dù rõ ràng là điều này làm cho sự kiện duy nhất xảy ra):

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) 

tôi bằng tay đã tạo một sự kiện lặp lại trong Lịch và tạo một phương thức đơn giản để đọc nó. Khi thực hiện event.getRecurrence. Sự tái diễn là "RRULE:FREQ=WEEKLY;WKST=MO;BYDAY=MO", đã tuyên bố chính xác rằng sự kiện mà tôi đã tạo là định kỳ hàng tuần vào Thứ Hai.

Ai có thể phát hiện ra nơi tôi đang đi sai?

EDIT:

Sử dụng Google's Api Explorer, tôi tự tạo ra JSON với lĩnh vực tái phát và nó làm việc.

Sau khi ghi JSON được tạo từ event, có vẻ như múi giờ không được chuyển.

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

Ngoài ra, thực hiện event.getStart().getTimeZone().toString() gây ra java.lang.NullPointerException.

Không chắc chắn tại sao họ không được thông qua ...

Trả lời

6

Dường như người ta phải thêm TimeZone một lần nữa khi tạo một EventDateTime từ đối tượng DateTime. Công việc sau đây:

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

Đó là nó. Cảm ơn! –

Các vấn đề liên quan