9

I want to get calendar event last sevendays on android devices ? i am beginner so tell me step by step solution for this..!Only get and read calendar not update and delete. Anybody help me ? i used code in below!

public class Example {

    public static void readCalendar(Context context) {

        ContentResolver contentResolver = context.getContentResolver();

        // Fetch a list of all calendars synced with the device, their display names and whether the
        // user has them selected for display.

        final Cursor cursor = contentResolver.query(Uri.parse("content://calendar/calendars"),
                (new String[] { "_id", "displayName", "selected" }), null, null, null);
        // For a full list of available columns see http://tinyurl.com/yfbg76w

        HashSet<String> calendarIds = new HashSet<String>();

        while (cursor.moveToNext()) {

            final String _id = cursor.getString(0);
            final String displayName = cursor.getString(1);
            final Boolean selected = !cursor.getString(2).equals("0");

            Log.v("anim","Id: " + _id + " Display Name: " + displayName + " Selected: " + selected);
            calendarIds.add(_id);
        }

        // For each calendar, display all the events from the previous week to the end of next week.        
        for (String id : calendarIds) {
            Uri.Builder builder = Uri.parse("content://calendar/instances/when").buildUpon();
            long now = new Date().getTime();
            ContentUris.appendId(builder, now - DateUtils.WEEK_IN_MILLIS);
            ContentUris.appendId(builder, now + DateUtils.WEEK_IN_MILLIS);

            Cursor eventCursor = contentResolver.query(builder.build(),
                    new String[] { "title", "begin", "end", "allDay"}, "Calendars._id=" + id,
                    null, "startDay ASC, startMinute ASC"); 
            // For a full list of available columns see http://tinyurl.com/yfbg76w

            while (eventCursor.moveToNext()) {
                final String title = eventCursor.getString(0);
                final Date begin = new Date(eventCursor.getLong(1));
                final Date end = new Date(eventCursor.getLong(2));
                final Boolean allDay = !eventCursor.getString(3).equals("0");

                Log.v("anim","Title: " + title + " Begin: " + begin + " End: " + end +
                        " All Day: " + allDay);
            }
        }
    }


}

i got null-pointerException.

Hiteshpatel0024
  • 593
  • 1
  • 4
  • 14

3 Answers3

38

My problem solved and i use below code-

public class Utility {
    public static ArrayList<String> nameOfEvent = new ArrayList<String>();
    public static ArrayList<String> startDates = new ArrayList<String>();
    public static ArrayList<String> endDates = new ArrayList<String>();
    public static ArrayList<String> descriptions = new ArrayList<String>();

    public static ArrayList<String> readCalendarEvent(Context context) {
        Cursor cursor = context.getContentResolver()
                .query(
                        Uri.parse("content://com.android.calendar/events"),
                        new String[] { "calendar_id", "title", "description",
                                "dtstart", "dtend", "eventLocation" }, null,
                        null, null);
        cursor.moveToFirst();
        // fetching calendars name
        String CNames[] = new String[cursor.getCount()];

        // fetching calendars id
        nameOfEvent.clear();
        startDates.clear();
        endDates.clear();
        descriptions.clear();
        for (int i = 0; i < CNames.length; i++) {

            nameOfEvent.add(cursor.getString(1));
            startDates.add(getDate(Long.parseLong(cursor.getString(3))));
            endDates.add(getDate(Long.parseLong(cursor.getString(4))));
            descriptions.add(cursor.getString(2));
            CNames[i] = cursor.getString(1);
            cursor.moveToNext();

        }
        return nameOfEvent;
    }

    public static String getDate(long milliSeconds) {
        SimpleDateFormat formatter = new SimpleDateFormat(
                "dd/MM/yyyy hh:mm:ss a");
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(milliSeconds);
        return formatter.format(calendar.getTime());
    }
Priyanka
  • 677
  • 5
  • 20
Hiteshpatel0024
  • 593
  • 1
  • 4
  • 14
0

Great Thanks! However, you got all the events from only one Calendar, like your main Google Account, how can you get events from ALL available calendars ??

Notice that on your built in calendar Widget, you can see events from Gmail, Exchange, Facebook etc' How to get these events as well?

As for particular events for date or week, I did this by using the the selection clause and selection Args in the query statement like this for particular day:

These are the selection and args define:

Uri content = Uri.parse("content://com.android.calendar/events");
String[] vec = new String[] { "calendar_id", "title", "description", "dtstart", "dtend", "allDay", "eventLocation" };
String selectionClause = "(dtstart >= ? AND dtend <= ?) OR (dtstart >= ? AND allDay = ?)";
String[] selectionsArgs = new String[]{"" + dtstart, "" + dtend, "" + dtstart, "1"};

And this how the query looks:

   ContentResolver contentResolver = context.getContentResolver();
   Cursor cursor = contentResolver.query(content, vec, selectionClause, selectionsArgs, null);
Moti Bartov
  • 3,454
  • 33
  • 42
0

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();
                    // event_ID: ID of tabel Event 
                    int event_ID = cursor.getInt(0);
                    googleCalendar.setEvent_id(event_ID);
                    // title of Event
                    String title = cursor.getString(1);
                    googleCalendar.setTitle(title);
                    String mOrganizer = cursor.getString(2);
                    googleCalendar.setOrganizer(mOrganizer);
                    // Date start of Event
                    String dtStart = cursor.getString(3);
                    googleCalendar.setDtstart(dtStart);
                    // Date end of Event
                    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;
    }
}
RalfFriedl
  • 1,134
  • 3
  • 11
  • 12
Huy TRAN
  • 71
  • 6