必须权限

    <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();

  

  

  

  

  

Android Calander Event的更多相关文章

  1. 图解Android - Android GUI 系统 (5) - Android的Event Input System

    Android的用户输入处理 Android的用户输入系统获取用户按键(或模拟按键)输入,分发给特定的模块(Framework或应用程序)进行处理,它涉及到以下一些模块: Input Reader: ...

  2. Android 解读Event和Main Log

    1 Android P EventLogTags文件 Android P 9.0.0 所有EventLogTags文件List: system/bt/EventLogTags.logtags syst ...

  3. Android hacking event 2017

    1.you can't find me, 老规矩先打开jeb,然后看下主活动, 发现又调用了mainthread类的startWrites方法,继续跟进去. 发现是新建了一个随机输入流的文件对象,然后 ...

  4. Android中Input型输入设备驱动原理分析(一)

    转自:http://blog.csdn.net/eilianlau/article/details/6969361 话说Android中Event输入设备驱动原理分析还不如说Linux输入子系统呢,反 ...

  5. Android学习系列(43)--使用事件总线框架EventBus和Otto

    事件总线框架 针对事件提供统一订阅,发布以达到组件间通信的解决方案. 原理 观察者模式. EventBus和Otto 先看EventBus的官方定义: Android optimized event ...

  6. Android RecyclerView单击、长按事件标准实现:基于OnItemTouchListener + GestureDetector

     Android RecyclerView单击.长按事件:基于OnItemTouchListener + GestureDetector标准实现 Android RecyclerView虽然拥有L ...

  7. Android中Input型输入设备驱动原理分析<一>

    话说Android中Event输入设备驱动原理分析还不如说Linux输入子系统呢,反正这个是没变的,在android的底层开发中对于Linux的基本驱动程序设计还是没变的,当然Android底层机制也 ...

  8. Android系统--输入系统(十二)Dispatch线程_总体框架

    Android系统--输入系统(十二)Dispatch线程_总体框架 1. Dispatch线程框架 我们知道Dispatch线程是分发之意,那么便可以引入两个问题:1. 发什么;2. 发给谁.这两个 ...

  9. 【原创翻译】ArcGis Android 10.2.4更新内容简介

    翻译不当和错误之处敬请指出 更新内容官方描述 https://developers.arcgis.com/android/guide/release-notes-10-2-4.htm 10.2.4的版 ...

随机推荐

  1. java中的IO流之文件复制

    O(∩_∩)O哈哈~ 1.综述 一门成熟的语言肯定具备的几个模块:IO,通信,线程,UI...... Java作为一门成熟的程序语言,其IO流是比较复杂的.上个图大家感受下: 简单分析一下,IO分为两 ...

  2. Mysql的主从数据库没有同步的解决办法

    Mysql的主从数据库没有同步的解决办法 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. ...

  3. Codeforces Round #353 (Div. 2) C Money Transfers

    题目链接: http://www.codeforces.com/contest/675/problem/C 题意: 给一个数组,每个数与他相邻的数相连,第一个与最后一个相连,每个数的数值可以左右移动, ...

  4. printf的一个常用技巧

    acm 的题目经常要求输出最后面一位不能有空格: 用if语句显得代码难看: 实现如下: int a[5]={1,2,3,4,5}; for(int i=0;i<=4;i++) printf(&q ...

  5. javascript 最常用的技巧整理

    1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu= ...

  6. Unity3d 联通沃商店接入问题

    Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Loope ...

  7. MYSQL注入天书之后记

    后记 对于工具的看法: 我之所以在每个例子中只写了几个示例,是因为我希望你能通过这一两个示例举一反三将其他的列出来.如果让我来完成每一次完整的注入,应该在知道原理的情况下,必然使用工具或者自己写代码实 ...

  8. Java script 看看黑客怎么写的

    在2011年的BlackHat DC 2011大会上Ryan Barnett给出了一段关于XSS的示例java script 代码: ($=[$=[ ] ] [(__=!$+$)[_=-~-~-~$] ...

  9. ACE 1.1.9 发布,开源云端代码编辑器

    点这里 ACE 1.1.9 发布,开源云端代码编辑器 oschina 发布于: 2015年04月06日 (1评) 分享到:    收藏 +25 4月18日 武汉 源创会开始报名,送华为开发板 ACE ...

  10. SharePoint Server 2007 简体中文下载

    SharePoint Server 2007 简体中文下载 2010-12-16 10:56 正式版key SN: Tkjcb-3wkhk-2ty2t-qymk2-9xm2y 这个版本也是通过Key来 ...