У меня есть заявка на встречу.Который можно забронировать через календарь 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;
}