I have followed the tutorial in this link - http://jimblackler.net/blog/?p=151&cpage=2#comment-52767 to access the internal android calendar database (even though it is
I finally made this work in the following way. Remember DTSTART, DTEND, _ID don't work for Instances table even if you can access them. Use BEGIN, END and Event_ID instead. Please refer to these 2 links: How to get calendar events with title including recurring events and Android Calendar Recurring Events Have Wrong End Date/Time
long now = System.currentTimeMillis();
Uri.Builder eventsUriBuilder = CalendarContract.Instances.CONTENT_URI.buildUpon();
ContentUris.appendId(eventsUriBuilder, Long.MIN_VALUE);
ContentUris.appendId(eventsUriBuilder, Long.MAX_VALUE);
Uri eventsUri = eventsUriBuilder.build();
Cursor cursor = context.getContentResolver().query(
eventsUri,
new String[] {CalendarContract.Instances.CALENDAR_ID, CalendarContract.Instances.TITLE,
CalendarContract.Instances.DESCRIPTION, CalendarContract.Instances.BEGIN,
CalendarContract.Instances.END, CalendarContract.Instances.EVENT_LOCATION,
CalendarContract.Instances.EVENT_ID},
CalendarContract.Instances.BEGIN + " >= " + now + " and " + CalendarContract.Instances.BEGIN
+ " <= " + (now + 2592000000L) + " and " + CalendarContract.Instances.VISIBLE + " = 1",
null,
CalendarContract.Instances.BEGIN + " ASC");