必须权限

    <uses-permission android:name="android.permission.READ_CALENDAR" />    <uses-permission android:name="android.permission.WRITE_CALENDAR" />

Calendar Event Url

private static String calanderURL = "";private static String calanderEventURL = "";private static String calanderRemiderURL = "";// 为了兼容不同版本的日历,2.2以后url发生改变static {if (Integer.parseInt(Build.VERSION.SDK) >= 8) {calanderURL = "content://com.android.calendar/calendars";calanderEventURL = "content://com.android.calendar/events";calanderRemiderURL = "content://com.android.calendar/reminders";} else {calanderURL = "content://calendar/calendars";calanderEventURL = "content://calendar/events";calanderRemiderURL = "content://calendar/reminders";}}

获取用户

// Get User NameCursor userCursor = getContentResolver().query(Uri.parse(calanderURL), null, null, null, null);if (userCursor.getCount() > 0) {while (userCursor.moveToNext()) {userCursor.getColumnNames();// [allowedAvailability, cal_sync9,// cal_sync8, ownerAccount,// cal_sync7, visible, cal_sync6,// canOrganizerRespond, cal_sync5,// cal_sync4, cal_sync3, cal_sync2,// canModifyTimeZone, cal_sync1,// calendar_color_index, _id,// calendar_timezone, _sync_id,// allowedReminders, cal_sync10,// name, sync_events,// calendar_access_level, dirty,// allowedAttendeeTypes,// canPartiallyUpdate, account_type,// COALESCE(isPrimary, ownerAccount// = account_name), maxReminders,// deleted, calendar_color,// account_name, calendar_location,// calendar_displayName, mutators]String userName = userCursor.getString(userCursor.getColumnIndex("name"));String calId = userCursor.getString(userCursor.getColumnIndex("_id"));Toast.makeText(CalendarActivity.this,calId+"    " +userName, Toast.LENGTH_LONG).show();}}

读取Calendar Event

//Get Calander EventCursor eventCursor = getContentResolver().query(Uri.parse(calanderEventURL), null, null, null, null);if (eventCursor.getCount() > 0) {while (eventCursor.moveToNext()) {for (int i = 0; i < eventCursor.getColumnCount(); i++) {eventCursor.getColumnNames();// [eventEndTimezone,// isOrganizer, cal_sync9,// cal_sync8, cal_sync7,// visible, cal_sync6,// cal_sync5, rrule,// cal_sync4, cal_sync3,// cal_sync2, cal_sync1,// calendar_color_index,// hasAlarm, rdate, dtstart,// sync_data1, sync_data2,// hasAttendeeData,// sync_data3,// calendar_timezone,// sync_data4, description,// sync_data5, sync_data6,// calendar_access_level,// lunarRrule, sync_data7,// sync_data8, sync_data9,// customAppPackage,// modifyTime, account_type,// hasExtendedProperties,// eventLocation, dtend,// allDay, sync_data10,// organizer, lastSynced,// deleted, account_name,// originalInstanceTime,// mutators,// selfAttendeeStatus,// eventColor_index,// eventTimezone,// createTime,// allowedAvailability,// ownerAccount,// canOrganizerRespond,// canModifyTimeZone,// lastDate,// guestsCanModify,// guestsCanSeeGuests,// exrule, title, _id,// displayColor, _sync_id,// allowedReminders,// uid2445, cal_sync10,// dirty,// allowedAttendeeTypes,// availability,// calendar_id, original_id,// customAppUri,// originalAllDay,// maxReminders, isLunar,// accessLevel,// calendar_color, duration,// calendar_displayName,// guestsCanInviteOthers,// original_sync_id,// eventColor, exdate,// eventStatus]String eventTitle = eventCursor.getString(eventCursor.getColumnIndex("title"));//Toast.makeText(CalendarActivity.this, eventTitle, Toast.LENGTH_LONG).show();}}}

插入 Calendar Event

//insert Calander Event// 获取要出入的gmail账户的idString calId = "";userCursor = getContentResolver().query(Uri.parse(calanderURL), null, null, null, null);if (userCursor.getCount() > 0) {userCursor.moveToFirst();calId = userCursor.getString(userCursor.getColumnIndex("_id"));}ContentValues event = new ContentValues();event.put("title", "奥巴马任总统后首次回祖籍国 肯尼亚人:别空手来");event.put("description", "奥巴马是美国第一位非洲裔总统,他的父亲老巴拉克·奥巴马是肯尼亚的经济学家。在奥巴马21岁的时候,老奥巴马不幸遭遇车祸去世,死后葬在故乡科盖洛(Kogelo)。奥巴马曾访问过这里,并在自己的回忆录《来自我父亲的梦想》里提及此事。在他入主白宫前,当地的小学还被命名为“参议员巴拉克·奥巴马小学”。奥巴马小学目前破旧不堪,孩子们还在用破桌烂凳上课。在接受媒体采访时,该小学的一位教师说:“我们认为,美国政府至少要带一些援助过来。”");// 插入hoohbood@gmail.com这个账户event.put("calendar_id", calId);Calendar mCalendar = Calendar.getInstance();mCalendar.add(Calendar.DATE, 1); long start = mCalendar.getTime().getTime();mCalendar.add(Calendar.HOUR_OF_DAY, 2);long end = mCalendar.getTime().getTime();event.put("dtstart", start);event.put("dtend", end);event.put("hasAlarm", 1);event.put("eventTimezone", TimeZone.getDefault().getID());Uri newEvent = getContentResolver().insert(Uri.parse(calanderEventURL), event);long id = Long.parseLong(newEvent.getLastPathSegment());ContentValues values = new ContentValues();values.put("event_id", id);// 提前10分钟有提醒values.put("minutes", 10);getContentResolver().insert(Uri.parse(calanderRemiderURL), values);Toast.makeText(CalendarActivity.this, "插入事件成功!!!", Toast.LENGTH_LONG).show();

  

  

  

  

  

更多相关文章

  1. 小学徒成长系列—StringBuilder & StringBuffer关键源码解析
  2. 小学徒进阶系列—JVM对String的处理

随机推荐

  1. 八门神器 - GameKiller 中的防破解技术(附
  2. 看了“我们中应该有英雄”,也来愤青一下!
  3. ACM之Java速成(4)
  4. EJBConfigurationException:未找到EJB的B
  5. Java中的XML输出——DOMImplementationLS
  6. 毕向东的Java学习笔记Day 15
  7. java 8中撤销永久代,引入元空间
  8. Java 字节流与字符流的总结和理解
  9. Java读取数据源相关信息
  10. 对一个JavaScript对象数组进行排序。