簡體   English   中英

Android中的Xamarin應用設置事件導致日歷崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM