我尝试通过以下代码添加日历。创建的活动可以通过手机上的日历应用读取,但只需同步到在线Google日历即可。任何人都可以给我一些点击来解决这个问题吗?
这里有一些评论 1.代码在我的真实手机上运行(Galaxy Nexus 4.1.1) 2.所有其他日历活动都可以同步到Google日历,只是程序添加无法同步。
--- ---更新
当我更改以下代码时
values.put(CalendarContract.Events.SYNC_EVENTS,1);
values.put(CalendarContract.Events.VISIBLE, 1);
- 我收到了错误
java.lang.IllegalArgumentException: Only the provider may write to sync_events
public void addEvent() {
long startMillis = 0;
long endMillis = 0;
Log.v("LOG", "entered addEvent");
//Calendar beginTime = Calendar.getInstance();
//beginTime.set(2012, 8, 11, 22, 0);
//startMillis = beginTime.getTimeInMillis();
startMillis = System.currentTimeMillis() + (3600 * 1000)*4;
//Calendar endTime = Calendar.getInstance();
//endTime.set(2012, 8, 11, 23, 0);
//endMillis = endTime.getTimeInMillis();
endMillis = System.currentTimeMillis() + (3600 * 1000)*5;
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART, startMillis);
values.put(CalendarContract.Events.DTEND, endMillis);
values.put(CalendarContract.Events.TITLE, "Dog");
values.put(CalendarContract.Events.DESCRIPTION, "DogInDESCRIPTION");
values.put(CalendarContract.Events.CALENDAR_ID, 1);
values.put(CalendarContract.Events.EVENT_TIMEZONE, "eventTimezone");
values.put(CalendarContract.Events.SYNC_EVENTS,0);
cr.insert(CalendarContract.Events.CONTENT_URI, values);
}
答案 0 :(得分:3)
您不应在CalendarContract.Events.SYNC_EVENTS
上设置CalendarContract.Events.CONTENT_URI
。
如果日历已设置为可见且已在您的设备上同步,则您只需添加一个事件即可同步。
如果您需要从应用启用同步,则可以在CalendarContract.Events.SYNC_EVENTS
上设置CalendarContract.Calendars.CONTENT_URI
。
例如(calId
是要更新为可见并同步的日历的ID。
ContentResolver cr = context.getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
values.put(CalendarContract.Calendars.VISIBLE, 1);
cr.update(ContentUris.withAppendedId(Calendars.CONTENT_URI, calId), values, null, null);