我正在尝试使用新的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);
我不太确定什么是错的,我希望有人可以帮助我!谢谢!
答案 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);