以编程方式在Android中添加日历事件不会同步到网络

时间:2013-10-30 01:54:55

标签: android calendar sync

我正在尝试使用新的Calendar 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);

我不太确定什么是错的,我希望有人可以帮助我!谢谢!

2 个答案:

答案 0 :(得分: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" />

答案 1 :(得分:0)

enter code here简单易行,

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

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

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

 values.put(Events.CALENDAR_ID, 2);