2011-04-27 32 views
5

Escribí un código simple para eliminar todas las entradas del calendario de Android, pero no eliminó nada.Eliminar entradas del calendario

Código Fuente:

public void DeleteEvent(View view){ 

      int iNumRowsDeleted = 0; 
      Uri eventsUri = Uri.parse("content://com.android.calendar/events"); 
      Cursor cur = getContentResolver().query(eventsUri, null, null, null, null); 

      while (cur.moveToNext()){ 

       long id = cur.getLong(cur.getColumnIndex("_id")); 
       Log.d(TAG, "ID: " + id); 
       Uri eventUri = ContentUris.withAppendedId(eventsUri, id); 
       iNumRowsDeleted = getContentResolver().delete(eventUri, null, null); 
      } 
     } 
+0

Gracias Man @Husky ... está funcionando para mí :) –

Respuesta

5

utilizo esto para borrar:

private void deleteEvent(ContentResolver resolver, Uri eventsUri, int calendarId) { 
    Cursor cursor; 
    if (android.os.Build.VERSION.SDK_INT <= 7) { //up-to Android 2.1 
     cursor = resolver.query(eventsUri, new String[]{ "_id" }, "Calendars._id=" + calendarId, null, null); 
    } else { //8 is Android 2.2 (Froyo) (http://developer.android.com/reference/android/os/Build.VERSION_CODES.html) 
     cursor = resolver.query(eventsUri, new String[]{ "_id" }, "calendar_id=" + calendarId, null, null); 
    } 
    while(cursor.moveToNext()) { 
     long eventId = cursor.getLong(cursor.getColumnIndex("_id")); 
     resolver.delete(ContentUris.withAppendedId(eventsUri, eventId), null, null); 
    } 
    cursor.close(); 
} 

me llaman con algo como esto:

Uri eventsUri; 
int osVersion = android.os.Build.VERSION.SDK_INT; 
if (osVersion <= 7) { //up-to Android 2.1 
    eventsUri = Uri.parse("content://calendar/events"); 
} else { //8 is Android 2.2 (Froyo) (http://developer.android.com/reference/android/os/Build.VERSION_CODES.html) 
    eventsUri = Uri.parse("content://com.android.calendar/events"); 
} 
ContentResolver resolver = this.getContentResolver(); 
deleteEvent(resolver, eventsUri, calendarId); 
+0

Gracias ... =) – Husky

+0

que es la identificación del calendario aquí – AndroidDev

+0

Android puede tener (y generalmente tiene) varios calendarios. CalendarId es un número entero que representa el calendario que desea usar. –

0

uso este código a su derecho

 public void DeleteEvent(int your_event_id){ 

     int iNumRowsDeleted = 0; 
     Uri eventsUri = Uri.parse("content://com.android.calendar/events"); 
     Cursor cur = getContentResolver().query(eventsUri, null, null, null, null); 

     while (cur.moveToNext()){ 

      Uri eventUri = ContentUris.withAppendedId(eventsUri, your_event_id); 
      iNumRowsDeleted = getContentResolver().delete(eventUri, null, null); 
     } 
    } 
Cuestiones relacionadas