2015-07-07 10 views
14

śledzę this sens, aby insert imprezy w CalendarWyjąć i aktualizacji istniejących Kalendarz wydarzeń

Jak update istniejący kalendarz wydarzeń, które mam wstawiony wcześniej za pomocą poniższego kodu:

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); 
    } 

bym chciałbym wiedzieć, w jaki sposób:

1. Remove existing event 

2. Update existing event 

Odpowiedz

2

Tutaj w jaki sposób możesz zmodyfikować wydarzenie. Powiedzmy, że jego ID jest identyfikator_zdarzenia:

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); 
} 

Aby usunąć zdarzenie, masz dwie możliwości:

Jeżeli jesteś standardowa aplikacja: Zastosowanie poprzedni kod i zastąpić wszystkie event.put przez ten jeden :

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

Jeśli jesteś SyncAdapter kalendarza i chce prawdziwe usunięcie (Poprzednia metoda po prostu mówi, że zdarzenie powinno zostać usunięte, a ten, który należy stosować następujące niegdyś calen dar jest zsynchronizowany:

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

Gdzie zdarzenieUri jest Uri zdarzenia uzyskanego zgodnie z poprzednim identyfikatorem zdarzenia.

Dla wszystkich poprzednich metod, jeśli dostaniesz wyjątek o nie jest w synchronizacji adaptera, można to wykorzystać:

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(); 
} 

Mam nadzieję, że to pomoże.

Źródło: kod osobisty + http://developer.android.com/guide/topics/providers/calendar-provider.html

Powiązane problemy