2013-07-22 96 views
0

我想對我編程方式創建這樣事件通過代碼添加不開

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); 

我的問題是,當我試圖打開這個事件看到的說明,它給了我一個錯誤,「Unfortun日曆已經停止「。我可以在將事件添加到默認日曆時打開該事件。我在創建日曆方面做了什麼錯? 我遵循這個博客的代碼http://www.derekbekoe.co.uk/blog/16-using-the-android-4-0-calendar-api#part4,但它仍然給我同樣的錯誤。我正在使用Android 4.2.2

回答

0

問題是日曆不喜歡顏色代碼集。我使用Android.Graphics.Color.Red而不是顏色的哈希碼。它與

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。