Xamarin Android无法设置新活动的日期

时间:2016-04-29 21:04:22

标签: xamarin xamarin.android android-calendar

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

调试时,我可以正确地看到变量dtStart和dtEnd(对于测试,我使用的格式为“15/05/2016 15:00:00”,格式为dd / MM / yyyy hh:mm:ss - 巴西模式)

感谢您的帮助!

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

1 个答案:

答案 0 :(得分:1)

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

字符串consts应为“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”(加上一小时)的结果:

  • 启动msec:1466028054652
  • 结束时间:1466031654659

创建事件的屏幕上限:

enter image description here