我试图创建一个界面来选择calenar事件,但我遇到了一些问题。在我的设备上,我收到了正确的事件,但我的许多用户报告说功能不起作用,有些用户甚至在日历中显示的事件也没有。在一台4.1三星设备上,我在应用程序上测试时崩溃了,所以我想知道的是;显示所有日历事件列表的正确方法是什么?这是我现在正在使用的代码:
Cursor cursor = getActivity().getContentResolver().query(Uri.parse
("content://com.android.calendar/events"),
new String[]{"calendar_id", "title", "description",
"dtstart", "dtend", "eventLocation"}, "calendar_id=1", null, null);
cursor.moveToFirst();
int length = cursor.getCount();
for (int i = 0; i < length; i++) {
CalendarEvent ce = new CalendarEvent();
ce.setTitle(cursor.getString(1));
ce.setNote(cursor.getString(2));
ce.setDate(cursor.getLong(3));
if (cursor.getString(1).length() > 0) {
mItems.add(ce);
}
cursor.moveToNext();
}
cursor.close();
答案 0 :(得分:2)
我怀疑罪魁祸首是这种情况:"calendar_id=1"
。
设备可以有多个日历。不能保证id = 1的那个是主要的那个(即使你使用了主要的那个,用户也可能在多个不同的日历中有事件 - 例如个人和工作)。
所以,这取决于你想要做什么。你应该:
IS_PRIMARY
的日历,但请参阅上面的警告)或calendar_id
或calendar_id
过滤器。