由于添加活动时,提示“需要一个账户和显示一个日历”,则需要添加一个默认账户。在添加活动,查询是否存在账户之前添加一个账户。
Cursor c =activity.getContentResolver().query(Calendars.CONTENT_URI, null, Calendars._ID, null, null);
Log.i(TAG, " ============== COUNT : " + c.getCount());
if(c.getCount() == 0){//判断数据库中是否存在日历
Log.i(TAG, "======== ADD Calendars");
initCalendars(activity);
}
private void initCalendars(Activity activity) {
TimeZone timeZone = TimeZone.getDefault();
ContentValues value = new ContentValues();
value.put(Calendars.OWNER_ACCOUNT,"xxx");
value.put(Calendars.NAME,"xxx");
value.put(Calendars.ACCOUNT_NAME,"xxx");
value.put(Calendars.ACCOUNT_TYPE,"com.android.exchange");
value.put(Calendars.CALENDAR_DISPLAY_NAME,"xxx");
value.put(Calendars.VISIBLE, 1);
value.put(Calendars.CALENDAR_COLOR,-9206951);
value.put(Calendars.CALENDAR_ACCESS_LEVEL,Calendars.CAL_ACCESS_OWNER);
value.put(Calendars.SYNC_EVENTS,1);
value.put(Calendars.CALENDAR_TIME_ZONE,timeZone.getID());
value.put(Calendars.OWNER_ACCOUNT,"xxx");
value.put(Calendars.CAN_ORGANIZER_RESPOND,0);
Uri calendarUri = Calendars.CONTENT_URI;
calendarUri = calendarUri.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true" )
.appendQueryParameter(Calendars.ACCOUNT_NAME, "xxx" )
.appendQueryParameter(Calendars.ACCOUNT_TYPE, "com.android.exchange" ) //CalendarContract.ACCOUNT_TYPE_LOCAL )
.build();
activity.getContentResolver().insert(calendarUri, value);
}