【问题标题】:Calendar event saved locally on phone, but can't sync to Google Calendar日历活动本地保存在手机上,但无法同步到 Google 日历
【发布时间】:2012-08-08 19:15:58
【问题描述】:

我尝试通过以下代码添加日历。创建的活动可以通过我手机上的日历应用程序读取,但只需同步到在线 Google 日历。谁能给我一些解决问题的方法?

这里有一些评论 1. 代码在我的真机上运行(Galaxy Nexus 4.1.1) 2. 其他所有日历事件都可以同步到谷歌日历,只是添加的程序不能同步。

---更新---

当我更改以下代码时

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);
}

【问题讨论】:

  • 你解决了这个问题吗?

标签: android sync google-calendar-api android-calendar


【解决方案1】:

您不应该在CalendarContract.Events.CONTENT_URI 上设置CalendarContract.Events.SYNC_EVENTS

如果日历已在您的设备上设置为可见并同步,您只需添加一个事件,它就会同步。

如果您需要从应用打开同步,您可以将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);

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多