Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Calendar Events

I am just making an operation with Calendar Content Provider, now I am failing at the point to display events for the particular date.

I know the Events URI for the < 2.1 version and 2.2 version, as below:

eventsUri = Uri.parse("content://calendar/events");    // < Android 2.1 version

eventsUri = Uri.parse("content://com.android.calendar/events");  // For Android Froyo 2.2 and later version

My doubts are:

  1. How do I Fetch all the events?
  2. How do I fetch events for the particular date?

So please, somebody with knowledge about the Calendar please help me and share your knowledge regarding this.

Thanx

like image 885
Paresh Mayani Avatar asked Nov 29 '10 09:11

Paresh Mayani


People also ask

Where are calendar events stored on Android?

The folder you're looking for is at /data/data/com. android. calendar/ but the stuff you need is under /data/data/com.

Why is my Android calendar not showing events?

First, try these common fixes If you're not connected, make sure that data or Wi-Fi is on, and that you're not in Airplane mode. Next, check your device's app store to make sure the Google Calendar app is up to date. To the left of the calendar's name, make sure the box is checked.


2 Answers

These examples are for <= 2.1 version;

first; find out which calendars exist

Cursor cursor = cr.query(Uri.parse("content://calendar/calendars"), new String[]{ "_id",  "displayname" }, null, null, null);
cursor.moveToFirst();
String[] CalNames = new String[cursor.getCount()];
int[] CalIds = new int[cursor.getCount()];
for (int i = 0; i < CalNames.length; i++) {
    CalIds[i] = cursor.getInt(0);
    CalNames[i] = cursor.getString(1);
    cursor.moveToNext();
}
cursor.close();

Fetching all events, and particular event is done by specifying range
ContentResolver contentResolver = getContentResolver();

Uri.Builder builder = Uri.parse(getCalendarUriBase() + "/instances/when").buildUpon();
        long now = new Date().getTime();
        ContentUris.appendId(builder, now - DateUtils.MILLIS_PER_DAY*10000);
        ContentUris.appendId(builder, now + DateUtils.MILLIS_PER_DAY * 10000);

and then let's say you wish to log events ID from calendar with ID = 1

Cursor eventCursor = contentResolver.query(builder.build(),
                new String[] { "event_id"}, "Calendars._id=" + 1,
                null, "startDay ASC, startMinute ASC"); 
        // For a full list of available columns see http://tinyurl.com/yfbg76w
        while (eventCursor.moveToNext()) {
            String uid2 = eventCursor.getString(0);
            Log.v("eventID : ", uid2);

        }
like image 168
bbaja42 Avatar answered Sep 19 '22 03:09

bbaja42


// Here's a way for you to get all the Calendar events list

public static void readCalendarEvent(Context context) {

   ContentResolver contentResolver = context.getContentResolver();
   cursor = contentResolver.query(Uri.parse("content://com.android.calendar/events"), (new String[] { "_id", "title", "organizer", "dtstart", "dtend"}), null, null, null);

   List<GoogleCalendar> gCalendar = new ArrayList<GoogleCalendar>();
   try {

       if (cursor.getCount() > 0) {
           while (cursor.moveToNext()) {
               GoogleCalendar googleCalendar = new GoogleCalendar();

               int event_ID = cursor.getInt(0);
               googleCalendar.setEvent_id(event_ID);
               String title = cursor.getString(1);
               googleCalendar.setTitle(title);
               String mOrganizer = cursor.getString(2);
               googleCalendar.setOrganizer(mOrganizer);
               String dtStart = cursor.getString(3);
               googleCalendar.setDtstart(dtStart);
               String dtEnd = cursor.getString(4);
               googleCalendar.setDtend(dtEnd);
               gCalendar.add(googleCalendar);
               Log.d("CaledarM",googleCalendar.getTitle()+" name = "+googleCalendar.getOrganizer()+" dateStart = "+googleCalendar.getDtstart()+" Size = " + gCalendar.size());
           }
       }
   } catch (AssertionError ex) {
       ex.printStackTrace();
   } catch (Exception e) {
       e.printStackTrace();
   }
}

// class GoogleCalendar()

public class GoogleCalendar {

    private int event_id;
    private String title,
            organizer,
            dtstart,
            dtend;

    public GoogleCalendar()
    {
    }

    public int getEvent_id() {
        return event_id;
    }

    public void setEvent_id(int calendar_id) {
        event_id = calendar_id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getOrganizer() {
        return organizer;
    }

    public void setOrganizer(String description) {
        this.organizer = description;
    }

    public String getDtstart() {
        return dtstart;
    }

    public void setDtstart(String dtstart1) {
        this.dtstart = dtstart1;
    }

    public String getDtend() {
        return dtend;
    }

    public void setDtend(String dtend1) {
        this.dtend = dtend1;
    }
}
like image 24
Huy TRAN Avatar answered Sep 18 '22 03:09

Huy TRAN