Android CalendarContract.Instances таблица возвращает старые значения - PullRequest
0 голосов
/ 05 февраля 2020

Я запрашиваю таблицу CalendarContract.Instances, чтобы прочитать все экземпляры событий календаря за интервал времени (curr_time, next_time), как показано в коде ниже. Этот код работает, когда записи календаря были вокруг некоторое время. Однако, если я добавляю новую запись, изменяю существующую запись или удаляю ее, я получаю некоторые старые / устаревшие записи (например, новая запись не возвращается, когда она должна быть, или неизмененная / удаленная запись все еще возвращается), и это происходит последовательно. Эта проблема возникает на моем телефоне (Samsung S7), но не возникает на эмуляторе Android. Мне интересно, видел ли кто-то еще эту проблему, или что я могу делать неправильно. Любая помощь приветствуется. Спасибо.

try {
    Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
    ContentUris.appendId(builder, curr_time);
    ContentUris.appendId(builder, next_time);

    String[] INSTANCE_PROJECTION = new String[]{Instances.EVENT_ID,
            Instances.TITLE, Instances.BEGIN, Instances.END};

    Uri uri = builder.build();
        cur = cr.query(uri, INSTANCE_PROJECTION, null, null,null);

    if (cur != null) {
        while (cur.moveToNext()) {
            String id = cur.getString(cur.getColumnIndex(Instances.EVENT_ID));
            String title = cur.getString(cur.getColumnIndex(Instances.TITLE));
            long start = cur.getLong(cur.getColumnIndex(Instances.BEGIN));
            long end = cur.getLong(cur.getColumnIndex(Instances.END));

            Calendar calendar = Calendar.getInstance();
            DateFormat formatter = SimpleDateFormat
                    .getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
            calendar.setTimeInMillis(start);
            Date start_date = calendar.getTime();
            calendar.setTimeInMillis(end);
            Date end_date = calendar.getTime();

            Log.i(log_tag, "Event:  " + id + "\t" + title + "\t" +
                    start + " " + formatter.format(start_date) + "\t" +
                    end + " " + formatter.format(end_date));
        }
    }
} catch (SecurityException e) {
    // no permission to read calendars
} finally {
    if (cur != null)
        cur.close();
}
...