我正在尝试使用
Android的新日历API来阅读今天的所有日历活动.我无法在数据库查询中找到正确的选择,以返回所有事件.似乎所有的周期性和全天事件都不在选择范围之内.什么选择可以让我从日历api获得今天的所有事件?
这是我目前的尝试:
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);
我不确定如何扩大选择或增加选择,以获得经常性事件和全天事件.任何帮助将不胜感激.
解决方法
要获得今天的所有活动,包括循环事件,您需要使用“实例”表,即
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,CalendarContract.Instances.DTSTART + " ASC");
请注意,您必须将时间限制附加到事件uri,否则不能以其他方式进行排序.