Android日历事件不显示
您好,我有以下代码在日历上添加事件:Android日历事件不显示,android,calendar,calendarcontract,Android,Calendar,Calendarcontract,您好,我有以下代码在日历上添加事件: public String addCalendarEntry(CalendarDTO calendar) { ContentValues event = new ContentValues(); ContentResolver cr = getContentResolver(); long startMillis = calendar.getStartDate().getTimeInMillis();
public String addCalendarEntry(CalendarDTO calendar) {
ContentValues event = new ContentValues();
ContentResolver cr = getContentResolver();
long startMillis = calendar.getStartDate().getTimeInMillis();
long endMillis = calendar.getEndDate().getTimeInMillis();
String timeZone = TimeZone.getDefault().getID();
event.put(CalendarContract.Events.CALENDAR_ID, calendar.getId());
event.put(CalendarContract.Events.TITLE, calendar.getTitle());
event.put(CalendarContract.Events.DESCRIPTION, calendar.getDescription());
event.put(CalendarContract.Events.EVENT_LOCATION, calendar.getLocation());
event.put(CalendarContract.Events.DTSTART, startMillis);
event.put(CalendarContract.Events.DTEND, endMillis);
event.put(CalendarContract.Events.ALL_DAY, Boolean.getBoolean(String.valueOf(calendar.isAllDay()))); // 0 for false, 1 for true
event.put(CalendarContract.Events.HAS_ALARM, 1); // 0 for false, 1 for true
event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone);
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, event);
return uri.getLastPathSegment();
}
直到前几天,这段代码还可以正常工作,突然间,我的日历上再也没有添加任何事件了。它也没有错,所以我在这里不知所措
CalendarDTO本身只是一个数据传输类:
public class CalendarDTO {
int id;
String title;
String description;
String location;
Calendar startDate;
Calendar endDate;
boolean isAllDay;
// getters and setters removed for brevity
}
非常感谢提供任何线索。您是否检查是否有带有
calendar.getId()的日历
从文件中:
向事件写信
事件表中的所有更新和插入都有进一步的限制:
如果allDay设置为1 eventTimezone必须是时区UTC,并且时间必须对应于午夜边界
试试这样的方法:
event.put(CalendarContract.Events.CALENDAR_ID, calendar.getId());
event.put(CalendarContract.Events.TITLE, calendar.getTitle());
event.put(CalendarContract.Events.DESCRIPTION, calendar.getDescription());
event.put(CalendarContract.Events.EVENT_LOCATION, calendar.getLocation());
if(calendar.isAllDay){
Calendar start=calendar.getStartDate();
start.set(Calendar.HOUR_OF_DAY, 0);
start.set(Calendar.MINUTE, 0);
start.set(Calendar.SECOND, 0);
start.set(Calendar.MILLISECOND, 0);
Calendar end=start;
end.add(Calendar.DAY_OF_MONTH,1);
event.put(CalendarContract.Events.DTSTART, start.getTimeInMillis());
event.put(CalendarContract.Events.DTEND, end.getTimeInMillis());
event.put(CalendarContract.Events.EVENT_TIMEZONE, Time.TIMEZONE_UTC);
}else{
event.put(CalendarContract.Events.DTSTART, startMillis);
event.put(CalendarContract.Events.DTEND, endMillis);
event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone);
}
event.put(CalendarContract.Events.HAS_ALARM, 1);
event.put(CalendarContract.Events.ALL_DAY, calendar.isAllDay()?1:0);
是的,但这不一定能回答我的问题。你只是在建议另一种选择。我我不会在你试图帮助的时候否决投票,但是一个替代方案不是答案,除非你确定安卓版本坏了。好的,先生,我删除了我的答案。我会尝试这个,然后再报告,但我想你可以在这里了解一些事情。Thanks@MarcosPlacona,如果没有帮助,请告诉我,我会删除答案,这样你可以得到更好的答案。你完全正确,我在文档中完全遗漏了这一点。这完全救了我的命!谢谢@isma3l