我正在使用以下代码设置日历活动。
该活动进入所选日历,但当我点击日历中的活动时,我得到了#34;不幸的是,日历已停止工作。"崩溃。
setCalendarEvent.Click += (object sender, EventArgs e) => {
//Set
//Create Event code
ContentValues eventValues = new ContentValues ();
eventValues.Put(CalendarContract.Events.InterfaceConsts.CalendarId, _calId);
eventValues.Put(CalendarContract.Events.InterfaceConsts.Title, "New Sample Event");
eventValues.Put(CalendarContract.Events.InterfaceConsts.Description, "Sample Description");
eventValues.Put(CalendarContract.Events.InterfaceConsts.EventTimezone, "Local");
eventValues.Put(CalendarContract.Events.InterfaceConsts.Dtstart, GetDateTimeMS(date.Year, date.Month, date.Day, hour, minute));
eventValues.Put(CalendarContract.Events.InterfaceConsts.Dtend, GetDateTimeMS(date.Year, date.Month, date.Day, (hour + 1), minute));
var uri = ContentResolver.Insert(CalendarContract.Events.ContentUri, eventValues);
Console.WriteLine("Uri for new event: {0}", uri);
long eventID = long.Parse(uri.LastPathSegment);
ContentValues reminderValues = new ContentValues();
//reminderValues.Put(CalendarContract.Reminders.InterfaceConsts.CalendarId, _calId);
reminderValues.Put(CalendarContract.Reminders.InterfaceConsts.EventId, eventID);
reminderValues.Put(CalendarContract.Reminders.InterfaceConsts.Method, RemindersMethod.Alert.ToString());
reminderValues.Put(CalendarContract.Reminders.InterfaceConsts.Minutes, 15);
var reminderUri = ContentResolver.Insert(CalendarContract.Reminders.ContentUri, reminderValues);
Console.WriteLine("Uri for new event: {0}", reminderUri);
};
我猜测我传递的事件数据有问题,但我无法弄清楚丢失的是什么或导致问题。有一段时间,有时候,在日历应用程序崩溃之前,我可以看到一个提示,询问用户是否参加了Yes,No和Maybe作为选项。不确定这是否有帮助。
答案 0 :(得分:0)
不确定,但您可以尝试将此添加到您的活动附加内容
.PutExtra(CalendarContract.Events.InterfaceConsts.AllowedReminders,true)
答案 1 :(得分:0)
我刚刚遇到了这个问题,我的情况可能会因为我使用Task运行代码而有所不同。但要使其工作,我必须使用
在UI线程上显式运行插入代码Activity.RunOnUiThread(() => {});
我希望这为其他人节省一些时间
答案 2 :(得分:-1)
var reminderValues = new ContentValues();
reminderValues.Put(CalendarContract.Reminders.InterfaceConsts.EventId, eventID);
reminderValues.Put(CalendarContract.Reminders.InterfaceConsts.Method, (int)RemindersMethod.Alert);
reminderValues.Put(CalendarContract.Reminders.InterfaceConsts.Minutes, 5);
}
只需要更改InterfaceConsts.Method部分