private void setEvent(){
long startMilis = 0;
int mCalId = 1;
long endMilis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2013, 1, 29, 9, 10);
startMilis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2013, 1, 30, 10,10);
endMilis = endTime.getTimeInMillis();
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(Events.CALENDAR_ID, mCalId);
values.put(Events.DTSTART, startMilis);
values.put(Events.DTEND, endMilis);
values.put(Events.TITLE,"Special Event");
values.put(Events.DESCRIPTION, "Group Activity");
values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
Uri uri = cr.insert(Events.CONTENT_URI, values);
Toast.makeText(this, "Event Added", Toast.LENGTH_LONG).show();
}
这是我的代码片段,我想在Android日历中添加Event。代码工作正常。
但是在设备上测试时,指定的事件实际上并未添加,也没有出现在日历 .Code完全没有错误,我已经提供了必要的权限。
有人可以告诉我我在哪里做错了。
答案 0 :(得分:3)
如果没有错误,但事件未出现在日历中,
我怀疑罪魁祸首是mCalId = 1
任务。
设备可以有多个日历。不能保证id == 1的那个是主要的(即使你使用了主要的那个,用户也可能在多个不同的日历中有事件 - 例如个人和工作)。
所以,这取决于你想要做什么。你应该:
IS_PRIMARY
的日历,但请参阅上面的警告)或calendar_id
。答案 1 :(得分:0)
也许您使用的是错误的Url,我在我的应用中使用了这个:
Uri EVENTS_URI = Uri.parse(CalendarContract.Events.CONTENT_URI.toString());
ContentResolver cr = getActivity().getContentResolver();
ContentValues values = new ContentValues();
values.put("calendar_id", 1);
values.put(Events.TITLE, recordatorio);
values.put(Events.ALL_DAY, 1);
values.put(Events.EVENT_LOCATION, lugar);
values.put("dtstart", calDate.getTimeInMillis());
values.put("dtend", calDate.getTimeInMillis());
values.put(Events.DESCRIPTION, observaciones);
values.put("availability", 0);
values.put(Events.HAS_ALARM, true);
values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().toString());
Uri uri = cr.insert(EVENTS_URI, values);
// to get the Id Event
long eventID = Long.parseLong(uri.getLastPathSegment());