2015-07-07 7 views
14

मैं Calendarनिकालें और अद्यतन मौजूदा कैलेंडर इवेंट

में this सार अनुसरण कर रही हूं, insert घटना के लिए मैं update कैसे मौजूदा करते कैलेंडर इवेंट है, जो मैं पहले डाला है कोड के नीचे का उपयोग कर:

public void addToCalender() throws ParseException { 

     ...... 

     ContentValues event = new ContentValues(); 
     event.put(CalendarContract.Events.CALENDAR_ID, calendarId[0]); 
     event.put(CalendarContract.Events.TITLE, "Event Title"); 
     event.put(CalendarContract.Events.DESCRIPTION, "Event Description"); 
     event.put(CalendarContract.Events.EVENT_LOCATION, "Eevnt Location"); 
     event.put(CalendarContract.Events.DTSTART, startCalTime); 
     event.put(CalendarContract.Events.DTEND, endCalTime); 
     event.put(CalendarContract.Events.STATUS, 1); 
     event.put(CalendarContract.Events.HAS_ALARM, 1); 
     event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID()); 

     Uri insertEventUri = AddEventActivity.this.getContentResolver().insert(
       eventsUri, event); 

     ContentValues reminders = new ContentValues(); 
     reminders.put(Reminders.EVENT_ID, 
       Long.parseLong(insertEventUri.getLastPathSegment())); 
     reminders.put(Reminders.METHOD, Reminders.METHOD_ALERT); 
     reminders.put(Reminders.MINUTES, 10); 

     AddEventActivity.this.getContentResolver().insert(remainderUri, reminders); 
    } 

मैं करूंगा जानना चाहते, मैं कैसे करूँ:

1. Remove existing event 

2. Update existing event 

उत्तर

1

... वास्तव में
आउटलुक आप

METHOD:REQUEST और ORGANIZER:xxxxxxxx
निर्दिष्ट करना RFC 2446

में परिभाषित सारांश में नियमों का जवाब करने के ...
Please read the original answer by Tom Carter.

2

यहाँ लगता है यह है कि आप किसी ईवेंट को कैसे संशोधित कर सकते हैं। मान लीजिए कि अपने आईडी eventID है करते हैं:

आप एक मानक आवेदन कर रहे हैं:

public void updateEvent(int eventID) 
{ 
    ContentResolver cr = context.getContentResolver(); 
    Uri eventUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventID); 
    ContentValues event = new ContentValues(); 
    event.put(CalendarContract.Events.TITLE, "new title"); 
    event.put(CalendarContract.Events.DESCRIPTION, "My cool event!"); 
    cr.update(eventUri, event, null, null); 
} 

एक घटना निकालने के लिए आपको दो संभावनाएं है उपयोग पिछले कोड और यह एक करके सभी event.put की जगह :

event.put(CalendarContract.Events.DELETED, 1);

आप कैलेंडर के SyncAdapter कर रहे हैं और एक असली विलोपन चाहते हैं (पिछले विधि बस का कहना है कि घटना को हटाया जाना चाहिए और एक कि इस प्रकार calen एक बार इस्तेमाल किया जाना चाहिए डार सिंक हो रहा है:

public deleteEvent(Uri eventUri) 
{ 
    cr.delete(event, null, null); 
} 

कहाँ eventUri घटना के उरी के रूप में घटना आईडी से पहले दिखाया गया है प्राप्त की।

पिछले विधियों में से सभी के लिए, यदि आप एक सिंक अनुकूलक में नहीं होने के बारे में एक अपवाद मिलता है, तो आप इस का उपयोग कर सकते हैं:

public static Uri asSyncAdapter(Uri uri, String account, String accountType) 
{ 
    return uri.buildUpon() 
      .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true") 
      .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, account) 
      .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType) 
      .build(); 
} 

मुझे आशा है कि यह आप में मदद मिलेगी।

स्रोत: व्यक्तिगत कोड + http://developer.android.com/guide/topics/providers/calendar-provider.html

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