我使用这个简单的方法从日历提供程序中获取事件。但我只从Facebook日历和假期日历中获得活动。为什么它不能与谷歌日历等其他日历一起使用?
public List<EventData> getEventsFromDay(Calendar beginTime, Calendar endTime) {
//convert Callendar data to millis
long beginMillis = beginTime.getTimeInMillis();
long endMillis = endTime.getTimeInMillis();
//list of all events this day
List<EventData> allEvents = new ArrayList<>();
///////////searching for Events id this day from Instances table
//what we want from data
String[] instanceQuery =
new String[]{
Instances._ID,
Instances.BEGIN,
Instances.END,
Instances.EVENT_ID};
//cursor get needed data
Cursor cursor =
Instances.query(mContext.getContentResolver(), instanceQuery, beginMillis, endMillis);
if (cursor.moveToFirst()) {
do {
//save id of every event this day
EventData singleEvent = new EventData();
singleEvent.setId(cursor.getLong(3));
allEvents.add(singleEvent);
} while (cursor.moveToNext());
}
//always close cursor!!
cursor.close();
////////// now searching for details of events from Events table
//what we want from data
String[] eventQuery =
new String[]{
Events._ID,
Events.TITLE,
Events.EVENT_COLOR,
};
for (int i = 0; i < allEvents.size(); i++) {
//cursor get needed data
Cursor eventCursor =
mContext.getContentResolver().
query(
Events.CONTENT_URI,
eventQuery,
Events._ID + " = ? ",
new String[] {Long.toString(allEvents.get(i).getId())},
null);
//convert data from cursor
if (eventCursor.moveToFirst()) {
allEvents.get(eventCursor.getPosition()).setTitle(eventCursor.getString(1));
allEvents.get(eventCursor.getPosition()).setColor(eventCursor.getString(2));
}
//always close cursor!!
eventCursor.close();
}
return allEvents;
}