首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用CalendarContract - Android 4.0+阅读所有今天的事件

使用CalendarContract - Android 4.0+阅读所有今天的事件
EN

Stack Overflow用户
提问于 2012-04-13 08:12:55
回答 5查看 11.7K关注 0票数 11

我正在尝试使用Android的新日历API来读取今天所有的日历事件。我很难在数据库查询上找到正确的选择来返回所有事件。似乎所有重复发生的和全天的事件都被排除在选择之外。什么样的选择参数允许我从日历api中获得今天的所有事件?

这是我目前的尝试:

代码语言:javascript
运行
复制
    Cursor cur = null;
    String selection = "((" + CalendarContract.Events.DTSTART
            + " >= ?) AND (" + CalendarContract.Events.DTEND + " <= ?))";
    Time t = new Time();
    t.setToNow();
    String dtStart = Long.toString(t.toMillis(false));
    t.set(59, 59, 23, t.monthDay, t.month, t.year);
    String dtEnd = Long.toString(t.toMillis(false));
    String[] selectionArgs = new String[] { dtStart, dtEnd };
    cur = c.getContentResolver().query(CalendarContract.Events.CONTENT_URI,
            null, selection, selectionArgs, null);

我不确定如何扩大选择范围或增加选择范围,以获得重复发生的事件和全天事件。任何帮助都将不胜感激。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-26 09:13:38

要获取今天的所有事件,包括重复事件,您需要使用Instances表,即

代码语言:javascript
运行
复制
Uri.Builder eventsUriBuilder = CalendarContract.Instances.CONTENT_URI
            .buildUpon();
ContentUris.appendId(eventsUriBuilder, timeNow);
ContentUris.appendId(eventsUriBuilder, endOfToday);
Uri eventsUri = eventsUriBuilder.build();
Cursor cursor = null;       
cursor = mContext.getContentResolver().query(eventsUri, columns, null, null, CalendarContract.Instances.DTSTART + " ASC");

请注意,必须将时间约束附加到事件uri,否则不能以任何其他方式进行排序。

为了包含全天的活动,只需将搜索范围扩大到前一天晚上11:59和今晚12:00。

票数 21
EN

Stack Overflow用户

发布于 2012-09-10 00:34:12

你的条件只给你今天严格限制的事件。你应该检查今天之前开始和之后结束的那些(多天事件)。

对于重复发生的事件,我会手动检查它们。我找不到别的办法。

我使用类似这样的东西:

代码语言:javascript
运行
复制
String selection = "((" + CalendarContract.Events.DTSTART + " <= ?) AND (" + CalendarContract.Events.DTEND + " >= ?)) OR (" + CalendarContract.Events.RRULE + " is not null )";

String[] selectionArgs = new String[] { dtEnd, dtStart};

致以敬意,

票数 5
EN

Stack Overflow用户

发布于 2012-05-06 04:37:42

您应该能够将CalendarContract.Events.ALL_DAY添加到您的选择条件中,以过滤所有ALL_DAY事件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10133616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档