Android 插入日程到系统日历要注意的3点

来源:互联网 发布:网络维修工具包 编辑:程序博客网 时间:2024/05/16 07:57

第一:由于各个手机的系统不一样,所以在对系统日历的账户进行操作的时候,一定要找到拥有最高权限的账户对其进行插入日程,否则有可能造成将日程插入系统日历之后有可能不出现删除按钮。

// 由于各个系统的账户多而且权限不一样,所以对权限进行升序排列查询,以便向最高权限的用户对日程进行CRUD的操作Cursor userCursor = mContext.getContentResolver().query(Uri.parse(calanderURL), null, null,        null, CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + " ASC "); // 升序排列);if (null != userCursor && userCursor.getCount() > 0) {    userCursor.moveToLast();  //注意:开发者可以根据需要改变添加事件的账户    calId = userCursor.getString(userCursor.getColumnIndex("_id"));} else {    initCalendars();    calId = userCursor.getString(userCursor.getColumnIndex("_id"));}userCursor.close();
第二:对于重复事件和非重复事件,大家都知道DTEND;和DURATION不能同时设置的。

对于非重复事件:

event.put(CalendarContract.Events.DTEND, schedule.getEndTime().getTime());event.put(CalendarContract.Events.DURATION, (byte[]) null);
对于非重复事件:

event.put(CalendarContract.Events.DURATION, duration);event.put(CalendarContract.Events.DTEND, (byte[]) null);

第三:当将修改之后的日程插入到系统日历的时候,使用update方法的时候,要记得要另外对提醒时间进行update,因为日程的uri和提醒时间的uri是不一样的。而且这是两张不同的表。

对日程的update:

mContext.getContentResolver().update(Uri.parse(calanderEventURL), event,        "_id=?", new String[]{scheduleId});
对提醒时间的update:

mContext.getContentResolver().update(Uri.parse(calanderRemiderURL), values, CalendarContract.Reminders._ID + "=?", new String[]{scheduleId});

0 0
原创粉丝点击