Android извлекает события из календаря, используя диапазон дат

На самом деле мне нужно получить события календаря за неделю, месяц, выбранную дату и сегодня. Мне удалось за неделю и месяц, но не в выбранный день.

String mainDate[] = dayValue.split("-");
            int year, month, day;

            year = Integer.parseInt(mainDate[0]);
            month = Integer.parseInt(mainDate[1]);
            day = Integer.parseInt(mainDate[2]);
Calendar calendar = Calendar.getInstance();
            calendar.set(year, month - 1, day, 0, 0, 0);
long after = calendar.getTimeInMillis();

            SimpleDateFormat formatterr = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

            Calendar endOfDay = Calendar.getInstance();
Cursor cursor;

            endOfDay.set(year, month - 1, day, 22, 59, 59);

            Uri.Builder builder = Uri.parse("content://com.android.calendar/instances/when").buildUpon();
            long now = new Date().getTime();
            ContentUris.appendId(builder, after);
            ContentUris.appendId(builder, endOfDay.getTimeInMillis());

            String[] projection = new String[] { "event_id", "title", "description", "dtstart", "dtend", "eventLocation", "accessLevel", "allDay", Instances.BEGIN, Instances.END };

            String sortOrder = "startDay ASC, startMinute ASC";

            cursor = getActivity().getContentResolver().query(builder.build(), projection, null, null, sortOrder);

//Впереди тот же код, цикл for и получение данных.

Теперь проблема в том, что если я получаю только события 14 мая, то у меня есть событие 13 мая, и это событие из facebook и его событие на весь день. Так что мне не нужно это событие, мне нужно только событие 14 мая.

Пожалуйста, посоветуйте мне.


person Pratik Dasa    schedule 03.04.2014    source источник


Ответы (1)


В CalendarContract.Instances есть встроенный метод query(). Надеюсь, это сработает в вашем сценарии.

Date startDate= Create an object of date with the your startdate range; // in ur case may be 14thMay
Date endDate = Create an object of date with the your enddate range; // in ur case may be 14thMay
long beginMillis = startDate.getTime() ;//the number of milliseconds since Jan. 1, 1970, midnight GMT.  
    long endMillis = endDate.getTime() ;
Cursor cursor = CalendarContract.Instances.query(contentResolver, projection, beginMillis, endMillis);
person Shivanand Darur    schedule 18.07.2014