Frage

Verwendung der Google -Kalender -API.

Nach dem Durchsuchen der RFC2445, Ich kann immer noch kein Wiederauftreten eines Ereignisses festlegen.

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

Nachdem ich den obigen Code ausgeführt habe, erhalte ich diesen Fehler weiter (NB: Alles funktioniert, wenn ich die Wiederholung angibt, obwohl dies offensichtlich das Ereignis einzeln auftreten):

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)

Ich habe manuell ein wiederkehrendes Ereignis im Kalender erstellt und eine einfache Methode zum Lesen gemacht. Bei der Ausführung event.getRecurrence. Das Wiederauftreten war "RRULE:FREQ=WEEKLY;WKST=MO;BYDAY=MO", was genau feststellte, dass das Ereignis, das ich erstellt hatte, wöchentlich an einem Montag wiederholt.

Kann jemand erkennen, wo ich falsch lage?

BEARBEITEN:

Verwendung Googles API -Explorer, Ich habe den JSON manuell mit dem Recurce -Feld erstellt und es funktionierte.

Nach dem Protokollieren des JSON, der aus erstellt wird event, Es scheint, dass die Zeitzone nicht bestanden wird.

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

Zusätzlich durchführen event.getStart().getTimeZone().toString() verursacht java.lang.NullPointerException.

Ich bin mir nicht sicher, warum sie nicht bestanden werden ...

War es hilfreich?

Lösung

Es scheint, dass man die Zeitzone erneut hinzufügen muss, wenn man ein EventDatetime aus dem DateTime -Objekt erstellt. Folgendes funktionierte:

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");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top