我正在尝试在我按照此编程方式创建的日历上添加一个事件
var uri = CalendarContract.Calendars.ContentUri; ContentValues val = new ContentValues();
val.Put(CalendarContract.Calendars.InterfaceConsts.CalendarAccessLevel, CalendarAccess.AccessOwner.ToString());
val.Put(CalendarContract.Calendars.Name, "Mary");
val.Put(CalendarContract.Calendars.InterfaceConsts.Visible, true);
val.Put(CalendarContract.Calendars.InterfaceConsts.SyncEvents, true);
val.Put(CalendarContract.Calendars.InterfaceConsts.CalendarColor, "0xff00ffff");
val.Put(CalendarContract.Calendars.InterfaceConsts.CalendarDisplayName, "Mary");
uri = uri.BuildUpon()
.AppendQueryParameter(CalendarContract.CallerIsSyncadapter, "true")
.AppendQueryParameter(CalendarContract.Calendars.InterfaceConsts.AccountName, AccountName)
.AppendQueryParameter(CalendarContract.Calendars.InterfaceConsts.AccountType, CalendarContract.AccountTypeLocal)
.Build();
var calresult = ContentResolver.Insert(uri, val);
calID = int.Parse(calresult.LastPathSegment);
AddCalendarEvent( calID);
它成功添加,我可以看到此日历
我正在添加这样的事件,
ContentValues eventValues = new ContentValues();
eventValues.Put(CalendarContract.Events.InterfaceConsts.CalendarId, calID);
eventValues.Put(CalendarContract.Events.InterfaceConsts.Title, "Test Event from M4A");
eventValues.Put(CalendarContract.Events.InterfaceConsts.Description, "This is an event created from Mono for Android");
eventValues.Put(CalendarContract.Events.InterfaceConsts.Dtstart, GetDateTimeMS(2013, 9, 15, 10, 0));
eventValues.Put(CalendarContract.Events.InterfaceConsts.Dtend, GetDateTimeMS(2013, 9, 15, 11, 0));
// GitHub issue #9 : Event start and end times need timezone support.
// https://github.com/xamarin/monodroid-samples/issues/9
eventValues.Put(CalendarContract.Events.InterfaceConsts.EventTimezone, "UTC");
eventValues.Put(CalendarContract.Events.InterfaceConsts.EventEndTimezone, "UTC");
var uri = ContentResolver.Insert(CalendarContract.Events.ContentUri, eventValues);
Console.WriteLine("Uri for new event: {0}", uri);
我的问题是,当我尝试打开此事件以查看说明时,它会给我一个错误,“不幸的是日历已停止”。我可以在将事件添加到默认日历时打开该事件。我在创建日历时做错了什么? 我按照此博客中的代码http://www.derekbekoe.co.uk/blog/16-using-the-android-4-0-calendar-api#part4进行了操作,但仍然给出了同样的错误。我使用的是Android 4.2.2
答案 0 :(得分:0)
创建日历时,您应该指定OWNER_ACCOUNT。 Android文档中的此链接显示插入新日历时必须包含的字段。 (http://developer.android.com/reference/android/provider/CalendarContract.Calendars.html)
在您的日历中添加新事件也是如此。 (http://developer.android.com/reference/android/provider/CalendarContract.Events.html)
此外,您的代码并不清楚,但目前看起来您正在使用默认的uri进行事件, CalendarContract.Events.ContentUri 。您可能还必须构建事件uri,就像您创建日历一样,然后在使用ContentResolver.Insert插入事件时使用此新uri。
答案 1 :(得分:0)
问题是日历不喜欢颜色代码集。我使用Android.Graphics.Color.Red而不是颜色的哈希码。它适用于那个