Xamarin Android 无法设置新事件的日期

Xamarin Android can't set new event's date

我可以在日历中创建一个新事件,但我无法设置事件的日期时间。 我可以设置位置、标题、描述等。

调试时,我可以正确地看到变量 dtStart 和 dtEnd(为了测试,我使用 dd/MM/yyyy [=23] 格式的字符串“15/05/2016 15:00:00” =] - 巴西模式)

感谢您的帮助!

btnAdicionarAgenda.Click += delegate
        {
            Intent calIntent = new Intent(Intent.ActionInsert);
            calIntent.SetData(CalendarContract.Events.ContentUri);
            calIntent.SetType("vnd.android.cursor.item/event");
            calIntent.PutExtra(CalendarContract.Events.InterfaceConsts.Title, calendarTitle);
            calIntent.PutExtra(CalendarContract.Events.InterfaceConsts.Description, calendarDescription);

            DateTime dtStart = DateTime.ParseExact(retNotificacao.get("dt_evento"), "dd/MM/yyyy HH:mm:ss",
                                   System.Globalization.CultureInfo.InvariantCulture);
            DateTime dtEnd = dtStart.AddHours(1);

            long lDtStart = Utils.GetDateTimeMS(dtStart.Year, dtStart.Month, dtStart.Day, dtStart.Hour, dtStart.Minute);
            long lDtEnd = Utils.GetDateTimeMS(dtEnd.Year, dtEnd.Month, dtEnd.Day, dtEnd.Hour, dtEnd.Minute);

            calIntent.PutExtra(CalendarContract.Events.InterfaceConsts.Dtstart, lDtStart);
            calIntent.PutExtra(CalendarContract.Events.InterfaceConsts.Dtend, lDtEnd);

            calIntent.PutExtra(CalendarContract.Events.InterfaceConsts.EventTimezone, "UTC");
            calIntent.PutExtra(CalendarContract.Events.InterfaceConsts.EventEndTimezone, "UTC");
            calIntent.PutExtra(CalendarContract.Events.InterfaceConsts.EventLocation, Session.nmEscolaAluno);



            StartActivity(calIntent);
        };

Utils.cs:

public static long GetDateTimeMS(int yr, int month, int day, int hr, int min)
    {
        Calendar c = Calendar.GetInstance(Java.Util.TimeZone.Default);

        c.Set(Calendar.DayOfMonth, day);
        c.Set(Calendar.HourOfDay, hr);
        c.Set(Calendar.Minute, min);
        c.Set(Calendar.Month, month);
        c.Set(Calendar.Year, yr);

        return c.TimeInMillis;
    }

请勿使用 DtstartDtend,发布的文档和示例(Google 和 Xamarin 的)只是 错误.

字符串常量应为 "EXTRA_EVENT_BEGIN_TIME" 和 "EXTRA_EVENT_END_TIME"。

变化:

calIntent.PutExtra(CalendarContract.Events.InterfaceConsts.Dtstart, lDtStart);    
calIntent.PutExtra(CalendarContract.Events.InterfaceConsts.Dtend, lDtEnd);

收件人:

calIntent.PutExtra(CalendarContract.ExtraEventBeginTime, lDtStart);
calIntent.PutExtra(CalendarContract.ExtraEventEndTime, lDtEnd);

“15/05/2016 15:00:00”(加一小时)的结果:

  • 开始毫秒:1466028054652
  • 结束毫秒:1466031654659

创建事件的屏幕上限: