Learn Python


Click to Learn Python3

Sunday, February 20, 2011

Insertion and Deletion of Calendar Events

We can add events to our android mobiles through our android application using the Calendar Events. This is specially for 2.2 version

Follow the below steps to do the insertion and deletion operations in Calendar events.

Step 1:

Firstof all we need to get the Calendar Name and Id,

As there is a chance of having many calendar configurations in a mobile, we must find out available calendar's. Using that calendars name and id only we can proceed further


Java

Cursor cursor=getContentResolver().query(Uri.parse("content://com.android.calendar/calendars"), new String[]{"calendar_id", "displayname"}, null, null, null);
cursor.moveToFirst();
// Get calendars name
String calendarNames[] = new String[cursor.getCount()];
// Get calendars id
calendarId = new int[cursor.getCount()];
for (int i = 0; i < calendarNames.length; i++)
{
calendarId[i] = cursor.getInt(0);
calendarNames[i] = cursor.getString(1);
cursor.moveToNext();
}



Step 2:

After getting the name and id of the calendar, we need to add the event


Java

ContentValues contentEvent = new ContentValues();
// Particular Calendar in which we need to add Event
contentEvent.put("calendar_id", calendarIds[0]);
// Title/Caption of the Event
contentEvent.put("title", "Wedding");
// Description of the Event
contentEvent.put("description", "Wedding Party");
// Venue/Location of the Event
contentEvent.put("eventLocation", "New York");
// Start Date of the Event with Time
contentEvent.put("dtstart", StartDate);
// End Date of the Event with Time
contentEvent.put("dtend", EndDate);
// All Day Event
contentEvent.put("allDay", 1);
// Set alarm for this Event
contentEvent.put("hasAlarm",1);
Uri eventsUri = Uri.parse("content://com.android.calendar/events");
// event is added successfully
getContentResolver().insert(eventsUri, contentEvent);
cursor.close();


Step 3:

If you like to delete the event means we can use this code


Java

getContentResolver().delete(Uri.parse("content://com.android.calendar/events"), "calendar_id=? and description=? and eventLocation=? ", new String[]{String.valueOf(calendarIds[0]), "Wedding Party", "New York"});



The same event can be insert or delete in 2.1, for that we can use like this

Step 1:

For this we can use the same code as mentioned in the Step 1 of 2.2 version.

Step 2:

We need to change the path as "content://calendar/calendars" from "content://com.android.calendar/calendars"

Step 3:

Don't take the above 2.2 version code, we need to use like this


Java

Uri CALENDAR_URI = Uri.parse("content://calendar/events");
Cursor cursors = getContentResolver().query(CALENDAR_URI, null, null, null, null);
if (cursors.moveToFirst())
{
while (cursors.moveToNext())
{
String desc = cursors.getString(cursors.getColumnIndex("description"));
String location = cursors.getString(cursors.getColumnIndex("eventLocation"));
// event id
String id = cursors.getString(cursors.getColumnIndex("_id"));
if ((desc==null) && (location == null))
{
}
else
{
if (desc.equals("Birthday Party") && location.equals("Delhi"))
{
Uri uri = ContentUris.withAppendedId(CALENDAR_URI, Integer.parseInt(id));
getContentResolver().delete(uri, null, null);
}
}
}
}



Download Source code


Have a good day.

10 comments:

  1. Hello,

    Very nice and very helpful article. I am using Eclipse for android development. I want to know how to install calendar in emulator and where can I get calendar for emulator?

    ReplyDelete
  2. Hi Muhammad Anas,
    We can't test this in emulator, we can't implement the calendar for the emulator

    ReplyDelete
  3. What date this code put the event?

    I've been testing on two devices: 2.2 and 2.3.4 Version.

    How it works?

    ReplyDelete
  4. Is there a way to provide a built-in native Calendar which can replace the one in Step 1? So the the user do not need to sign in a sync account.

    ReplyDelete
  5. No currently we are not having like that

    ReplyDelete
  6. I want to retrieve all reminder which are added in calendar. How can I get all reminder/events?

    Please help me I am stuck on this.

    Thanks.

    ReplyDelete
  7. how do i remove all calendar entries made by a specific app, once user uninstalls the app.

    ReplyDelete
  8. During this website, you will see this shape, i highly recommend you learn this review. Shisha Hire

    ReplyDelete