1. 程式人生 > >Android 插入日程到系統日曆要注意的3點

Android 插入日程到系統日曆要注意的3點

第一:由於各個手機的系統不一樣,所以在對系統日曆的賬戶進行操作的時候,一定要找到擁有最高許可權的賬戶對其進行插入日程,否則有可能造成將日程插入系統日曆之後有可能不出現刪除按鈕。

// 由於各個系統的賬戶多而且許可權不一樣,所以對許可權進行升序排列查詢,以便向最高許可權的使用者對日程進行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});