同样的事件正在重复当我从Calendar Provider获取事件列表。此外,我可以在默认日历应用程序(不是谷歌日历应用程序)中看到相同的问题。但该事件仅在谷歌日历应用程序中显示一次。我已调试代码,我可以发现每个重复的事件都有其唯一的事件ID,所以我无法过滤它们。
我正在使用此代码段来获取一天的事件
Uri.Builder eventsUriBuilder =
CalendarContract.Instances.CONTENT_URI.buildUpon();
ContentUris.appendId(eventsUriBuilder, Long.MIN_VALUE);
ContentUris.appendId(eventsUriBuilder, Long.MAX_VALUE);
Uri eventsUri = eventsUriBuilder.build();
Cursor cursor = context.getContentResolver().query(
eventsUri,
new String[]{CalendarContract.Instances.CALENDAR_ID,
CalendarContract.Instances.TITLE,
CalendarContract.Instances.DESCRIPTION,
CalendarContract.Instances.BEGIN,
CalendarContract.Instances.END,
CalendarContract.Instances.EVENT_LOCATION,
CalendarContract.Instances.ALL_DAY,
CalendarContract.Instances.START_DAY,
CalendarContract.Instances.END_DAY,
CalendarContract.Instances.START_MINUTE},
"((" + CalendarContract.Instances.BEGIN + " >= " +
Long.toString(startTime.getTimeInMillis()) + " AND " +
CalendarContract.Instances.BEGIN
+ " <= " +
(Long.toString(endTime.getTimeInMillis())) + ") OR "
+ "(" + CalendarContract.Instances.END + " >= " +
Long.toString(startTime.getTimeInMillis()) + " AND " + CalendarContract.Instances.END
+ " <= " + (Long.toString(endTime.getTimeInMillis())) + ") OR "
+ "(" + CalendarContract.Instances.BEGIN + " <= " + Long.toString(startTime.getTimeInMillis()) + " AND " + CalendarContract.Instances.END
+ " >= " + (Long.toString(endTime.getTimeInMillis())) + ")) "
+ " AND " + CalendarContract.Instances.VISIBLE + " = 1"
+ " AND calendar_id != " + getCalendarId(context),
null,
CalendarContract.Instances.BEGIN + " ASC");