![](/img/trans.png)
[英]How to add an event in Android inbuilt calender and retrieve it using C#
[英]Creating Calender event using Xamarin Android(7.0) c# Error with creating event
嗨,我正在嘗試調試問題,並且確實很掙扎。
ContentValues eventValues = new ContentValues();
eventValues.Put(CalendarContract.Events.InterfaceConsts.CalendarId, -1);
eventValues.Put(CalendarContract.Events.InterfaceConsts.Title, title);
eventValues.Put(CalendarContract.Events.InterfaceConsts.Description, desc);
eventValues.Put(CalendarContract.Events.InterfaceConsts.Dtstart, GetDateTimeMS(year, month, day, starthr, startmin));
eventValues.Put(CalendarContract.Events.InterfaceConsts.Dtend, GetDateTimeMS(year, month, day, stophr, stopmin));
eventValues.Put(CalendarContract.Events.InterfaceConsts.HasAlarm, true);
eventValues.Put(CalendarContract.Events.InterfaceConsts.EventTimezone, "Local");
eventValues.Put(CalendarContract.Events.InterfaceConsts.EventEndTimezone, "Local");
// eventValues.Put(CalendarContract.Events.InterfaceConsts.AllowedReminders, true);
var eventUri = ContentResolver.Insert(CalendarContract.Events.ContentUri, eventValues);
long eventID = long.Parse(eventUri.LastPathSegment);
ContentValues reminderValues = new ContentValues();
reminderValues.Put(CalendarContract.Reminders.InterfaceConsts.CalendarId, -1);
reminderValues.Put(CalendarContract.Reminders.InterfaceConsts.EventId, eventID);
reminderValues.Put(
CalendarContract.Reminders.InterfaceConsts.Method,
(int)RemindersMethod.Alert
);
reminderValues.Put(CalendarContract.Reminders.InterfaceConsts.Minutes, 5);
它在此行崩潰:var eventUri = ContentResolver.Insert(CalendarContract.Events.ContentUri,eventValues);
錯誤:Java.Lang.IllegalArgumentException:未知的URL內容://com.android.calendar/calendars/-1
我正在測試三星Galaxy Edge G925F
好的,答案很簡單。
我沒有指定明智的CalendarId,大多數android的默認值為1或3。我會使用3,因為在某些機型上1是為生日事件保留的。 (除非您想要生日,否則。)
日期格式化程序一直在做一些錯誤的事情。 JSON pull事件沒有指定一個月,而是刪除了前導0,因此使09變為9。這引起了問題,因此繼續執行if語句並明確指定了月份。
long GetDateTimeMS(int yr, int month, int day, int hr, int min) { Java.Util.Calendar c = Java.Util.Calendar.GetInstance(Java.Util.TimeZone.Default); c.Set(Java.Util.Calendar.DayOfMonth,day); c.Set(Java.Util.Calendar.HourOfDay, hr); c.Set(Java.Util.Calendar.Minute, min); if (month == 1) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.January); } else if (month == 2) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.February); } else if (month == 3) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.March); } else if (month == 4) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.April); } else if (month == 5) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.May); } else if (month == 6) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.June); } else if (month == 7) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.July); } else if (month == 8) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.August); } else if (month == 9) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.September); } else if (month == 10) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.October); } else if (month == 11) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.November); } else if (month == 12) { c.Set(Java.Util.Calendar.Month, Java.Util.Calendar.December); } c.Set(Java.Util.Calendar.Year,yr); return c.TimeInMillis; }
我希望這可以幫助其他人擺脫困境。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.