必须权限

    <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 Name
Cursor 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 Event
Cursor 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账户的id
String 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. NodeJs+http+fs+request+cheerio 采集,保存数据,并在网页上展示(构建web服务器)
  2. python发送邮件
  3. python中转义用法 r&#39;&#39;
  4. 区块 Blocks
  5. POJ 2891 Strange Way to Express Integers(拓展欧几里得)
  6. [iOS]关于视频方向的若干问题
  7. jQuery信息提示工具jquery.poshytip (转载)
  8. SqlServer2005或2008数据库字典--表结构.sql
  9. Java HTML页面抓取实例
  10. [有错误]堆排序的实现 java
  11. php-app开发接口加密
  12. [置顶] hdu4747 Mex 线段树
  13. iframe 里的高度自适应
  14. Ubuntu 12.04: How to enable root login
  15. Docker----在Docker中部署Asp.net core2.1以及修改发布
  16. leetcode刷题——一些算法技巧总结2.0
  17. linux学习第十四天 (Linux就该这么学)找到一本不错的Linux电子书
  18. Win7无法安装程序提示Installer integrity check has failed的解决方法
  19. weixinShare.js / 极简微信分享插件
  20. Java数据解析---JSON

热门文章

  1. 23、获取app所占据的内存
  2. 浅谈GitHub
  3. 【BZOJ】【1030】【JSOI2007】文本生成器
  4. short-path problem (Floyd) 分类: ACM TYPE 2014-09-01 23:58 100人阅读 评论(0) 收藏
  5. The 15th Zhejiang University Programming Contest
  6. 使用CSS3实现超炫的Loading(加载)动画效果
  7. javascript实现数据结构与算法系列:队列 -- 链队列和循环队列实现及示例
  8. 利用Openvswitch实现不同物理机中的Docker容器互连
  9. ZOJ2928 Mathematical contest in modeling(模拟退火)
  10. iOS学习资料链接