fazlurr
3/3/2015 - 11:23 AM

Event Utility Class in for getting upcoming android event in Android - http://stackoverflow.com/a/26861039/4549947

Event Utility Class in for getting upcoming android event in Android - http://stackoverflow.com/a/26861039/4549947

package id.bewei.flipcard.util;

import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.provider.CalendarContract;
import android.util.Log;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

import id.bewei.flipcard.model.FCEvent;

/**
 * Created by Fazlur Rahman - BWI on 3/3/2015 - 5:10 PM.
 * For event operation
 */
public class EventUtils {
    public static final String TAG = "EventUtils";

    public static List<FCEvent> getAllEvents(Context context) {
        List<FCEvent> eventsList = new ArrayList<>();

        String[] projection = new String[] { CalendarContract.Events.CALENDAR_ID, CalendarContract.Events.TITLE, CalendarContract.Events.DESCRIPTION, CalendarContract.Events.DTSTART, CalendarContract.Events.DTEND, CalendarContract.Events.ALL_DAY, CalendarContract.Events.EVENT_LOCATION };

        // 0 = January, 1 = February, ...
        Calendar startTime = Calendar.getInstance();
//        startTime.set(2014,0,1,0,0);

        int nextYear = startTime.get(Calendar.YEAR) + 1;

        Calendar endTime= Calendar.getInstance();
        endTime.set(nextYear,0,1,0,0);

        // the range is all data from 2014
        String selection = "(( " + CalendarContract.Events.DTSTART + " >= " + startTime.getTimeInMillis() + " ) AND ( " + CalendarContract.Events.DTSTART + " <= " + endTime.getTimeInMillis() + " ))";

        Cursor cursor = context.getContentResolver().query( CalendarContract.Events.CONTENT_URI, projection, selection, null, null );

        String dumpedCursor = DatabaseUtils.dumpCursorToString(cursor);

        Log.d(TAG, dumpedCursor);

        // output the events
        if (cursor.moveToFirst()) {
            do {
                FCEvent event = new FCEvent();
                event.setName(cursor.getString(1));
                event.setLocation(cursor.getString(6));
                event.setStartDate(new Date(cursor.getLong(3)).toString());
                event.setEndDate(new Date(cursor.getLong(4)).toString());
                event.setNotes(cursor.getString(2));

                eventsList.add(event);
            } while ( cursor.moveToNext());
        }

        // Sort events by date
        Collections.sort(eventsList, new Comparator<FCEvent>() {
            public int compare(FCEvent o1, FCEvent o2) {
                return o1.getStartDate().compareTo(o2.getStartDate());
            }
        });

        return eventsList;
    }
}