[英]Xamarin.Android: open specific event in calendar from another app
[英]Xamarin App set event in Android causing Calendar to crash
我正在使用以下代碼設置日歷事件。
該事件進入選定的日歷,但是當我在“日歷”中單擊該事件時,我得到“不幸的是,日歷已停止工作。” 崩潰。
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);
};
我猜想我傳遞的事件數據有問題,但是我無法弄清楚丟失了什么或導致了什么問題。 有時,在“日歷”應用崩潰之前的一會兒,我會看到提示詢問用戶是否正在參加“是”,“否”和“也許”作為選項。 不確定是否有幫助。
不確定,但是您可以嘗試將其添加到活動附加項目中
.PutExtra(CalendarContract.Events.InterfaceConsts.AllowedReminders,true)
我也剛剛遇到了這個問題,當我使用Task運行代碼時,我的情況可能會有所不同。 但是要使其正常工作,我必須使用以下方法在UI線程上顯式運行插入代碼
Activity.RunOnUiThread(() => {});
我希望這可以為其他人節省時間
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部分
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.