Повторяющиеся события из календаря не работают - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть заявка на встречу.Который можно забронировать через календарь Outlook.И все работает хорошо, но если вы делаете еженедельное или ежемесячное мероприятие, то в моем приложении это не работает.Только в первый день и потом не видно этих повторяющихся событий.Что не так с моим кодом?Как заставить мое приложение видеть еженедельные повторяющиеся события?Примеры, которые я нашел, мне не помогли.

 public static synchronized ArrayList<Meeting> getMeetings(RMApplication application, Mailbox mailbox) throws ServiceException {
    if (isDemo(application)) throw new ServiceException("demo");

    Service service = getService(application.getApplicationContext());


    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    SimpleDateFormat sdfEndDay = new SimpleDateFormat("yyyy-MM-dd 23:59:59");


    Date startTime = new Date();
    Date endTime = new Date();

    try {
        endTime = sdf.parse(sdfEndDay.format(new Date()));
    } catch (ParseException e) {
        e.printStackTrace();
    }

    IsGreaterThanOrEqualTo restriction1 = new IsGreaterThanOrEqualTo(AppointmentPropertyPath.END_TIME, startTime);
    IsLessThanOrEqualTo restriction2 = new IsLessThanOrEqualTo(AppointmentPropertyPath.END_TIME, endTime);
    And restriction3 = new And(restriction1, restriction2);

    StandardFolderId calendarFolder = new StandardFolderId(StandardFolder.CALENDAR, mailbox);

    List<PropertyPath> props = AppointmentPropertyPath.getAllPropertyPaths();


    FindItemResponse response = service.findItem(calendarFolder, props, restriction3);
    ArrayList<Meeting> appointments = new ArrayList<Meeting>();


    Date currentDate = new Date();

    int counter = 0;

    for (int i = 0; i < response.getItems().size(); i++) {
        if (response.getItems().get(i) instanceof Appointment) {
            if (DateUtils.compare(currentDate, ((Appointment) response.getItems().get(i)).getEndTime()) <= 0) {
                Appointment a;
                try {
                    if (counter < 1) {
                        if (((Appointment) response.getItems().get(i)).getSubject().equals(application.getResources().getString(R.string.default_meeting_subject))) {
                            counter++;
                            throw new ServiceException("Counter limit");
                        }
                        a = getService(application.getApplicationContext()).getAppointment(((Appointment) response.getItems().get(i)).getItemId());
                        counter++;
                    } else {
                        throw new ServiceException("Counter limit");
                    }
                } catch (ServiceException ex) {
                    ex.printStackTrace();
                    a = (Appointment) response.getItems().get(i);
                }

                appointments.add(new Meeting(a));

            }
        }
    }

    return appointments;

}
...