获取与修改android自带日历日程

Android中的日历,只有真机才有,模拟上是没有的,所以测试环境一定要真机!!

因为日历是系统自带的,所以我们读写它一定要申请权限,也就是在AndroidManifest.xml加如下两行代码(一个读一个写):

<!-- get calendar read and write permission -->
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />

日历日程URL在2.2以后版本有所改变

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

	}

下面是获取日程的主要代码:

ContentResolver cr = context.getContentResolver();
		// 日历里面相应的Event的URI
		Uri uri = Uri.parse(calanderEventURL);
		Cursor cursor = cr.query(uri, null, null, null, null);
		while (cursor.moveToNext()) {
			CalendarEvent cde = new CalendarEvent();
			cde.setCalendar_id(cursor.getString(cursor
					.getColumnIndex(Events.CALENDAR_ID)));
			cde.setTitle(cursor.getString(cursor.getColumnIndex(Events.TITLE)));
			cde.setDtstart(cursor.getString(cursor
					.getColumnIndex(Events.DTSTART)));
			cde.setDtend(cursor.getString(cursor.getColumnIndex(Events.DTEND)));
			cde.setDuration(cursor.getString(cursor
					.getColumnIndex(Events.DURATION)));
			cde.setRrule(cursor.getString(cursor.getColumnIndex(Events.RRULE)));
			cde.setEventTimezone(cursor.getString(cursor
					.getColumnIndex(Events.EVENT_TIMEZONE)));
			calendarEvents.add(cde);
		}

下面是写入日程的主要代码

写入的时候这几个字段是必须的所以我就只写了这几个字段了

ContentResolver cr = context.getContentResolver();
		// 日历里面相应的Event的URI
		Uri uri = Uri.parse(calanderEventURL);
		Cursor cursor = cr.query(uri, null, null, null, null);
		while (cursor.moveToNext()) {
			CalendarEvent cde = new CalendarEvent();
			cde.setCalendar_id(cursor.getString(cursor
					.getColumnIndex(Events.CALENDAR_ID)));
			cde.setTitle(cursor.getString(cursor.getColumnIndex(Events.TITLE)));
			cde.setDtstart(cursor.getString(cursor
					.getColumnIndex(Events.DTSTART)));
			cde.setDtend(cursor.getString(cursor.getColumnIndex(Events.DTEND)));
			cde.setDuration(cursor.getString(cursor
					.getColumnIndex(Events.DURATION)));
			cde.setRrule(cursor.getString(cursor.getColumnIndex(Events.RRULE)));
			cde.setEventTimezone(cursor.getString(cursor
					.getColumnIndex(Events.EVENT_TIMEZONE)));
			calendarEvents.add(cde);
		}
时间: 2024-11-08 03:07:44

获取与修改android自带日历日程的相关文章

调用Android自带日历功能

Android手机配备有一个内置的日历应用程序.第三方应用程序可以利用日历内容提供商接口读取用户的日历信息和安排在日历新的事件.这个日历可以直接同步用户的谷歌日历. 不幸的是,没有文档和Android手机的日历应用集成,因为有另外一个联系人应用程序.相反,本文所提供的所有信息,将会通过逆向工程的谷歌日历内容提供商.该接口是受变化的,将会支持有限的功能.然而,日历一体化可以成为一些类型的应用强大的功能. 本文的代码测试之到Android 2.0 SDK版本.我们将发布一个更新如果有一个很大的转变.

iOS开发——运行时OC篇&amp;使用运行时获取系统的属性:使用自己的手势修改系统自带的手势

使用运行时获取系统的属性:使用自己的手势修改系统自带的手势 有的时候我需要实现一个功能,但是没有想到很好的方法或者想到了方法只是那个方法实现起来太麻烦,一或者确实为了装逼,我们就会想到iOS开发中最牛逼的技术运行时(Runtime) 关于运行时这里就不多说了,请查看笔者之前搬过来了精选文章,这里主要是怎么在实际开发中使用运行时实现我们想要的功能. 比如,在iOS开发中有这样一个问题,关于导航栏中我们点击一个按钮会跳到对应的子控制器,但是这里问题就来了,我们在对应的字控制器中可以点击对应的back

Android 中带你开发一款自动爆破签名校验工具 kstools

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Android中带你开发一款自动爆破签名校验工具kstools - 生死看淡,不服就干! - 博客频道 - CSDN.NET 生死看淡,不服就干! http://www.wjdiankong.cn 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &n

Android自定义控件之日历控件

Android自定义控件之日历控件 2015-10-23 Android开发中文站 三月份学习android,至今也有半年有余,中间也做过两个项目,但是依然感觉自己做的应用不是很有新意,比不上应用市场上那些应用如此绚丽.所以自己仍需继续努力.学习至今,仍感觉自定义控件是一块硬骨头,还没修炼到身后的内功,下面就切入正题,以一次项目的需求,来实现一个自定义的日历控件.效果图先来一发. 我们分析下效果图,然后确定我们的需求. (1).绘制星期的自定义View,用于标识日期的礼拜. (2).绘制日期的自

Android 向系统日历中添加事件

查了一天半,总算有点大概了.以下是自己的理解,有错误的地方望指正. android系统有日历功能,应用程序可以根据一些接口开发自己的功能,即使是日历app也是根据这些接口开发的,所以我们可以利用程序向系统日历写入事件,然后用手机上的日历软件就可以看到我们添加的事件.网上这方面资料也不少,也有demo,但是我没找到一个可以正确运行的,有的是缺少参数,有的是版本的原因,4.0以上的系统这方面变动比较大,所以只能一边查资料一边修改. 大体思路就是:先查看系统日历是否有账户,如果没有必须要添加一个,然后

修改Android手机内核,绕过反调试

0x1.手机设备环境 Model number: Nexus 5 OS Version: Android 4.4.4 KTU84P Kernel Version: 3.4.0-gd59db4e 0x2.Android内核提取 查找Android设备的boot分区文件.高通芯片的设备可以通过下面的命令进行查找. cd /home/androidcode/AndroidDevlop/modifyNexus5Boot adb shell ls -al /dev/block/platform/msm_s

Android UI-自定义日历控件

Android UI-自定义日历控件 本篇博客笔者给大家分享一个日历控件,这里有个需求:要求显示当前月的日期,左右可以切换月份来查看日期. 我们想一想会如何去实现这样的一个控件,有开源的,但可能不太满足我们的特定的需求,这里笔者自定义了一个,读者可以根据自己的需求来修改代码.下面来说一下实现的思路: 首先我们要显示当前月份,自然我们要计算出当前的日期,并且把每一天对应到具体的星期,我们会有以下效果: 我们先想一下这样的效果用什么控件可以实现?很自然可以想到用网格视图GridView,但这里笔者使

Android自带音频均衡器MusicFx分析

Android自带音频均衡器MusicFx分析 种种原因,我要简单分析一个Android中built-in的音频均衡器MusicFx.重点是它的默认值的来历.网上很少有文章讲了这个的除了这篇<com.android.musicFx设置音效流程 -- 从app到AudioFlinger>.注:Android系统版本为4.2.2_r1. 从App到AudioFliger的终点是在android_media_AudioEffect.cpp(之前版本在是audio_media_AudioEffect.

android 实现带清除效果的EditText(附带抖动效果)

Android一直没有提供类似于ios中自带清除效果的输入框(ios只要只要添加属性即可实现),所以在Android当中 想要实现此效果就需要使用自定义控件的方式实现. 思路:可以使用一个Linearlayout里面横向布局一个EditText和一个删除的图片,监听输入框的焦点和文字变化,设置图片的显隐和点击清除事件.但是这么做些弊端,首先增加了UI布局的层级结构不利于UI结构的优化而且可能会出现文字过长遮挡住图片的情况.所以采用自定义控件继承于EditText,使用getCompoundDra