2014-07-21 4 views
5

मैं सिर्फ एंड्रॉइड कैलेंडरों के साथ काम करने के तरीके सीख रहा हूं। अब तक, मैं मौजूदा कैलेंडर के बारे में जानकारी प्रदर्शित करने में सक्षम हूं। मैं भी अपने खुद के स्थानीय कैलेंडर बना सकते हैं - परीक्षण कोड की तरह:एंड्रॉइड कैलेंडर प्रदाता: मैं अपने स्थानीय कैलेंडर कैसे हटा सकता हूं?

private void createCalendarTest() 
{ 
    Uri.Builder builder = Calendars.CONTENT_URI.buildUpon(); 
    builder.appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER, "true") 
      .appendQueryParameter(Calendars.ACCOUNT_NAME, "private") 
      .appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL); 

    Uri uri = builder.build(); 

    ContentValues values = new ContentValues(); 
    values.put(Calendars.NAME, "TEST"); 
    values.put(Calendars.CALENDAR_DISPLAY_NAME, "Calendar named TEST"); 
    values.put(Calendars.SYNC_EVENTS, false); 
    values.put(Calendars.VISIBLE, true); 

    getContentResolver().insert(uri, values); 
} 

वास्तव में, मैं कई कैलेंडर केवल _ID में मतभेद बना सकते हैं। मैंने कहीं और पढ़ा है कि सिंक एडाप्टर का उपयोग करते समय मैं केवल कैलेंडर बना सकता हूं। अब, मैं कैलेंडर कैसे हटा सकता हूं? मुझे उम्मीद है कि यूआरआई में सिंक एडाप्टर जानकारी, और हटाए गए कैलेंडर के _ID भी होनी चाहिए। मैंने निम्नलिखित कोड की कोशिश की, लेकिन मैं असफल रहा:

private void deleteCalendarTest() 
{ 
    Uri.Builder builder = Calendars.CONTENT_URI.buildUpon(); 
    builder.appendPath("6") // here for testing; I know the calender has this ID 
      .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER, "true") 
      .appendQueryParameter(Calendars.ACCOUNT_NAME, "private") 
      .appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL); 

    Uri uri = builder.build(); 

    getContentResolver().delete(uri, null, null); 
    Toast.makeText(this, "??? deleteCalendarTest() not working", Toast.LENGTH_SHORT).show(); 
} 

मैं इसे कैसे ठीक कर सकता हूं?

+0

क्या आपको इस मुद्दे के लिए कोई फिक्स मिला? मैं तुम्हारी एक ही स्थिति में हूँ! –

+0

नहीं, मैंने इसे ठीक नहीं किया। परियोजना का वह हिस्सा रोक दिया गया था, और मैंने समाधान की खोज जारी नहीं रखी। – pepr

+1

मुझे एक समाधान मिला और मैंने सवाल का जवाब दिया ... शायद यह किसी और की मदद करेगा! –

उत्तर

3

अधिक ध्यान के साथ प्रलेखन पढ़ने के बाद, मैं आप सामग्री में जोड़ना चाहिए पता चला भी निम्नलिखित क्षेत्रों को महत्व देता है:

values.put(CalendarContract.Calendars.SYNC_EVENTS, 1); 
values.put(CalendarContract.Calendars.ACCOUNT_NAME, "private"); 
values.put(CalendarContract.Calendars.ACCOUNT_TYPE,CalendarContract.ACCOUNT_TYPE_LOCAL); 

फिर सब कुछ ठीक होना चाहिए और आप डाला कैलेंडर को हटाना सक्षम होना चाहिए ! ;)

+1

प्रयास के लिए धन्यवाद। मैं इसे अभी नहीं देख सकता; वैसे भी ... – pepr

+0

मैं इन सभी मापदंडों एक कैलेंडर बनाने के लिए नहीं जोड़ा है लेकिन अभी भी स्थानीय कैलेंडर जो मैं आवेदन –

+0

से programitically बनाने आप खेतों मैं कैलेंडर निर्माण के लिए उल्लेख किया है का उपयोग करते हैं हटाने में सक्षम हैं और आप ContentProvider के यूआरआई तीन से अटैचमेंट @pepr द्वारा उपयोग किए जाने वाले क्वेरी पैरामीटर, आपको समस्या नहीं होनी चाहिए। शायद आपके कोड में कुछ गड़बड़ है। वैसे भी, दस्तावेज़ीकरण बहुत मदद करता है: http://developer.android.com/guide/topics/providers/calendar-provider.html –

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