1

我正在尝试使用新的日历 API 创建一个事件,虽然它在本地创建一个事件,但它从未出现在 Google 日历上。我试图在同一个日历中手动创建一个事件并且完美同步。我看过不少类似的帖子,但似乎没有一个答案能解决问题。

这是我用于 Android 4.0+ 的代码:

ContentValues values = new ContentValues();
values.put(Events.DTSTART, info.getStartTime());
values.put(Events.DTEND, info.getEndTime());
values.put(Events.TITLE, info.getTitle());
values.put(Events.DESCRIPTION, info.getDescription());
values.put(Events.CALENDAR_ID, this.getCalendarInfo().getId()); //hardcoded to 1, which is my default calendar
values.put(Events.EVENT_TIMEZONE, info.getTimeZone());
values.put(Events.STATUS, Events.STATUS_CONFIRMED);
values.put(Events.HAS_ALARM, 0);

this.getContentResolver().insert(Events.CONTENT_URI, values);

我不太确定出了什么问题,我希望有人能帮助我!谢谢!

4

2 回答 2

6

我的解决方案是为日历提供商请求同步,它对我有用:

    private void requestCalendarSync()
{
    AccountManager aM = AccountManager.get(this);
    Account[] accounts = aM.getAccounts();

    for (Account account : accounts)
    {
        int isSyncable = ContentResolver.getIsSyncable(account,  CalendarContract.AUTHORITY);

        if (isSyncable > 0)
        {
            Bundle extras = new Bundle();
            extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
            ContentResolver.requestSync(accounts[0], CalendarContract.AUTHORITY, extras);
        }
    }
}

允许:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
于 2013-12-30T10:59:13.053 回答
0

enter code here很简单,这条线

values.put(Events.CALENDAR_ID, this.getCalendarInfo().getId()); //hardcoded to 1, which is my default calendar

实际上告诉 android 将事件添加到 LOCAL android 日历....我假设您想将其添加到同步到您的 gmail 帐户的日历中....所以而不是

values.put(Events.CALENDAR_ID, this.getCalendarInfo().getId());

尝试

 values.put(Events.CALENDAR_ID, 2);
于 2013-11-10T19:15:56.503 回答