我可以在日历中创建新事件,但我无法设置事件的日期时间。 我可以设置位置,标题,描述等。
调试时,我可以正确地看到变量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;
}
答案 0 :(得分:1)
请勿使用Dtstart
和Dtend
,发布的文档和示例(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);