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