5

Google Calendar 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

ऐसा नहीं है कि एक बार फिर जब समयदिनाँक वस्तु से एक 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

यही था। धन्यवाद! –

संबंधित मुद्दे