android日历中通过代码添加的事件未打开

android日历中通过代码添加的事件未打开,android,xamarin.android,Android,Xamarin.android,我正试图在我以编程方式创建的日历上添加一个事件,如下所示 var uri = CalendarContract.Calendars.ContentUri; ContentValues val = new ContentValues(); val.Put(CalendarContract.Calendars.InterfaceConsts.CalendarAccessLevel, CalendarAccess.AccessOwner.ToString()); va

我正试图在我以编程方式创建的日历上添加一个事件,如下所示

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);
我的问题是,当我试图打开此事件以查看描述时,它会给我一个错误,“不幸的是,日历已停止”。当事件添加到默认日历时,我可以打开该事件。我在创建日历的过程中犯了什么错误??
我遵循了这个博客的代码,但它仍然给了我同样的错误。我使用的是Android 4.2.2

在创建日历时,您应该指定所有者帐户。Android文档中的此链接显示插入新日历时必须包含的字段。()

这与向日历中添加新事件的情况类似。()


此外,代码中还不清楚,但目前看起来您正在使用事件的默认uri CalendarContract.events.ContentUri。您可能还必须构建事件uri,就像创建日历一样,然后在使用ContentResolver.insert插入事件时使用此新uri。

问题是日历不喜欢颜色代码集。我使用Android.Graphics.Color.Red代替了颜色的哈希代码。它与此配合得很好