2012-09-24 19 views
8

मैंने एंड्रॉइड ऐप के भीतर से एक नया कैलेंडर बनाने के तरीकों के लिए पूरी तरह जांच की है। मैंने देखा है कि एकमात्र तरीका नवीनतम एपीआई संस्करण में नए कैलेंडर एपीआई का उपयोग कर रहा है, लेकिन अगर आप CalendarContract.ACCOUNT_TYPE_LOCAL का उपयोग करते हैं तो यह केवल काम करता है। यह आपको Google खाते से जुड़े कैलेंडर बनाने की अनुमति नहीं देगा, Google Calendar के साथ सिंक्रनाइज़ किया जाएगा। यह कैलेंडर सूची में Google Calendar पर ऑनलाइन दिखाई नहीं देता है।एंड्रॉइड एक नया कैलेंडर जोड़ना

values.put(CalendarContract.Calendars.ACCOUNT_TYPE, 
    CalendarContract.ACCOUNT_TYPE_LOCAL); 

मैंने खाता से खाता प्रकार का उपयोग करने का प्रयास किया है, लेकिन यह काम नहीं करता है। हालांकि यह किसी भी त्रुटि का उत्पादन प्रतीत नहीं होता है। नतीजा ठीक है।

values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType); 

यहाँ Calendar API और SYNCADAPTER (खाते पर टिप्पणी प्रकार) का उपयोग कर एक नया स्थानीय कैलेंडर जोड़ने के लिए पूरा कोड है। क्या किसी को पता है कि मैं क्या करने की कोशिश कर रहा हूं, यह भी संभव है?

AccountManager manager = AccountManager.get(context); 
Account[] accounts = manager.getAccountsByType("com.google"); 

String accountName = ""; 
String accountType = ""; 

for (Account account : accounts) { 
    accountName = account.name; 
    accountType = account.type; 
    break; 
} 

ContentResolver cr = context.getContentResolver(); 
ContentValues values = new ContentValues(); 

values.put(CalendarContract.Calendars.ACCOUNT_NAME, accountName); 
//values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType); 
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL); 
values.put(CalendarContract.Calendars.NAME, DaysSince.CAL_NAME); 
values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, DaysSince.CAL_NAME); 
values.put(CalendarContract.Calendars.SYNC_EVENTS, 1); 
values.put(CalendarContract.Calendars.VISIBLE, 1); 
values.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER); 
values.put(CalendarContract.Calendars.OWNER_ACCOUNT, accountName); 
values.put(CalendarContract.Calendars.DIRTY, 1); 
values.put(CalendarContract.Calendars.CALENDAR_TIME_ZONE, TimeZone.getDefault().getID()); 

Uri calUri = CalendarContract.Calendars.CONTENT_URI; 

calUri = calUri.buildUpon() 
     .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true") 
     .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, accountName) 
     .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType) 
     .build(); 

Uri result = cr.insert(calUri, values); 
+0

यदि आपकी समस्या हल हो गई है, तो कृपया अपने स्वयं के प्रश्न का उत्तर दें। आपको बैज मिलेगा और कई को मुफ्त/आसान सहायता मिलेगी। –

+0

क्या आपके पास अपने प्रश्न के लिए कोई समाधान है? मैं वही देख रहा हूँ बीटीडब्ल्यू अच्छा सवाल है। –

उत्तर

2

हाँ आप इसे कर सकते हैं। लेकिन चूंकि आप अपने Google खाते से जुड़े कैलेंडर बनाना चाहते हैं, इसलिए आपको इसके लिए Google कैलेंडर API की आवश्यकता है (एंड्रॉइड कैलेंडर प्रदाता के साथ ऐसा करने के लिए एक एकल समाधान नहीं मिला)। नीचे दिए गए लिंक की जाँच करें:

उनके एपीआई एक्सप्लोरर जांच करना न भूलें। नया कैलेंडर बनाने के लिए सरल HTTP अनुरोध:

POST https://www.googleapis.com/calendar/v3/calendars?key={YOUR_API_KEY}

{ 
"summary": "My new google calendar" 
} 

और यह प्रतिक्रिया है:

{ 
"kind": "calendar#calendar", 
"etag": "__________etag_val_________", 
"id": "[email protected]", 
"summary": "My new google calendar" 
} 

उसके बाद आप के साथ अपने Android एप्लिकेशन से इस कैलेंडर को प्रबंधित करने के लिए सक्षम होना चाहिए कैलेंडर प्रदाता (सिंक के बाद)।

+0

क्या आप कृपया विस्तृत कर सकते हैं? आपके कोड में 'YOUR_API_KEY' क्या है? – yshahak

+0

एंड्रॉइड एपीआई प्रमाणीकरण के लिए केवल [ओएथ 2.0] (https://developers.google.com/google-apps/calendar/auth) के साथ आता है। वैसे भी पहला [लिंक] (https://developers.google.com/google-apps/calendar/quickstart/android) अभी भी मान्य है और आपको एंड्रॉइड और Google कैलेंडर एपीआई के साथ त्वरित शुरुआत दे सकता है। अपने एपीआई जांच के साथ एक नया कैलेंडर डालने की बात करते हुए [यह] (https://developers.google.com/google-apps/calendar/v3/reference/calendars/insert) – Luke

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