介绍安卓中对日历事件的增删查改
来源:互联网 发布:数据透视表高级教程 编辑:程序博客网 时间:2024/06/17 12:35
介绍安卓中对日历事件的增删查改
前几个月在做项目时有需求要将自己APK的应用同步到手机系统日历中,于是当时就查看了一些文章对手机系统日历的操作有些研究,虽然网上对日历操作的文章很多,但是自己写下来也是对自己曾经学过的东西的一种肯定,也可以让自己在以后忘了这些知识的时候再回头翻翻。
首先你要获得对安卓系统日历事件操作的权限,也就是在AndroidManifest.xml文件中加入如下两行
· <uses-permission android:name="android.permission.READ_CALENDAR"/>
· <uses-permission android:name="android.permission.WRITE_CALENDAR"/>
安卓中日历用到三个URL,分别是日历用户的URL,事件的URL,以及事件提醒的URL,三个URL在安卓版本2.2前后分别是:
if(Integer.parseInt(Build.VERSION.SDK)>=8){
uri = "content://com.android.calendar/calendars";
eventUri = "content://com.android.calendar/events";
reminderUri = "content://com.android.calendar/reminders";
}
else{
uri = "content://calendar/calendars";
eventUri = "content://calendar/events";
reminderUri = "content://calendar/reminders";
}
接下来就将演示 如何在系统的日历中插入,修改,查询,和删除一条日历的操作了。
插入日历:
因为现在一个手机里可能会有很多的日历,这就要先查询出,你要对你手机里的哪个日历做添加日历的事件;
查询手机日历:
Uri calendars = Uri.parse(uri);
Cursor managedCursor = getContentResolver().query(calendars,projection, null, null, null);//查询出你手机里所有的日历
String calId = null;//你要添加日历事件的日历ID
if (managedCursor.moveToFirst()){
do{
int idColumn = managedCursor.getColumnIndex("_id");
String id = managedCursor.getString(idColumn);//获取系统日历的id
if(id.equals("3")){//假设我们要操作id为3的日历,则把这个id赋值给calId
calId=id;
break;
}
}while(managedCursor.moveToNext());
}
Calendar calendar = Calendar.getInstance();
long start = calendar.getTime().getTime();
calendar.setTime(endDate);
long end = calendar.getTime().getTime();
ContentValues event = new ContentValues();
event.put("calendar_id", calId);
event.put("title", "新日历事件");
event.put("description", "这是一条新日历事件 ");
event.put("dtstart", start);
event.put("dtend", end);
event.put("eventTimezone", Time.getCurrentTimezone());//这个时区一定要设置 否则应用会挂掉
event.put("hasAlarm", 1);
Uri eventcalendarUri = Uri.parse(eventUri);
Uri url = getContentResolver().insert(eventcalendarUri,event);//添加一条日历事件
long eventId = Long.parseLong(url.getLastPathSegment());//获取这条日历事件的id
//增加10分钟提醒
ContentValues values = new ContentValues();
values.put("event_id", eventId);
values.put("method", 1);
values.put("minutes", 10);
getContentResolver().insert(Uri.parse(reminderUri), values);
得到这条日历事件的id之后,就可以通过这个id对这条日历事件进行修改,查询和删除操作了
修改日历事件:
ContentValues updateValues = new ContentValues();
updateValues.put("description","这是对前一条日历事件的修改 ");
updateValues.put("dtstart", start);
updateValues.put("dtend", end);
Uri updateUri = ContentUris.withAppendedId(Uri.parse(eventUri), eventId);
getContentResolver().update(updateUri, updateValues, null, null);
查询日历事件:
Cursor cursor = getContentResolver().query(Uri.parse(eventUri), null, null, null, null);
if(cursor.moveToFirst()){
do{
String eventId = cursor.getString(cursor.getColumnIndex("_id"));
String description=cursor.getString(cursor.getColumnIndex("description"));
}
while(cursor.moveToNext());
}
删除日历事件:
ContentValues updateValues = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(Uri.parse(eventUri),eventId)
getContentResolver().delete(deleteUri ,null,null);
好了,对日历的操作就到这里了,希望对有需要的人有点帮助
- 介绍安卓中对日历事件的增删查改
- 对系统日历CalendarProvider进行增删改查操作的测试
- 安卓中对SQLite数据库的增删改查
- 安卓中实现对SQLITE数据表的增删改查
- 安卓中对数据库的操作(增删改查)
- c# 对Xml的增删改查
- c# 对Xml的增删改查
- java 对xml的增删改查
- JDBC对MySQL的增删改查
- c# 对Xml的增删改查
- Dom对XML的增删改查
- SimpleXML对XML的增删改查
- nodejs对mongodb的增删改查
- php对mysql的增删改查
- GDAL 对shp的增删查改
- 对mysql数据库的增删改查
- 对JSON的增删查改
- vickate_iOS_FMDB 对数据库的增删改查
- Redis源码分析(十八)--- db.c内存数据库操作
- 篆子最走综谆祝坠尊做追拙昨棕谆坠住卒
- 【Shell】【学习笔记】Linux Shell脚本应用(五)
- Java高手真经_编程基础卷——读书笔记(5)——如何用Eclipse调试Java程序
- MiddleGenIDE工具的使用
- 介绍安卓中对日历事件的增删查改
- git学习(3)---远程仓库
- 罪琢综坐撰赘缀准走驻总捉仔追妆鬃拙爪
- Windows和Linux之间相互访问
- perl 中的 <>
- 设计模式原则
- 计蒜客 挑战难题 第14题:罗马数字转换成整数
- windows本地建svn服务端,测试可用
- 【图像处理】关于车辆检测算法的总结与改进探讨