如何将私有数据附加到android日历事件

时间:2012-02-20 13:11:53

标签: android google-calendar-api android-calendar

我们如何将一些额外的数据附加到日历事件,如文件,照片,简单的字符串等,..

我使用了扩展属性,并能够通过扩展属性插入一些额外的数据

Uri extendedProperties=Uri.parse("content://com.android.calendar/extendedproperties");
ContentValues extendedValues=new ContentValues();
extendedValues.put("event_id", id);
extendedValues.put("name",key);
extendedValues.put("value",value);
getApplicationContext().getContentResolver().insert(extendedProperties, extendedValues);

以后能够检索下面的数据

Uri extentdedProperties=Uri.parse("content://com.android.calendar/extendedproperties");
CursorextendedPropertires Cursor=getContentResolver().query(extentdedProperties,null,"event_id = "+Id +",null,null);

它适用于Android 2.2 ...如果在Android 4.0(冰淇淋三明治)中测试相同的代码。它抛出的错误是只有同步适配器才能访问内容://com.android.calendar/extendedproperties。

所以我把查询称为“callerissyncadapter”。现在我能够插入扩展属性。但是,一旦事件同步到服务器,服务器就会删除扩展属性。

日历提供商(谷歌除外)

并不完全支持这些扩展属性

有没有办法将一些额外的数据附加到除extendedproperties之外的日历事件,或者我们能否以更好的方式使用这些扩展属性。

1 个答案:

答案 0 :(得分:0)

除非你真的是同步适配器,否则不要使用callerissyncadapter。将此设置为true将导致设备上的内容观察者不会收到有关该提供程序中内容更改的通知,并且不会将更改保留到服务器。

你为什么要这样做?您是否尝试将某个数据用于应用与日历事件相关联?

如果是这样,为什么不在您的应用程序中创建自己的私有数据存储(或内容提供商),并通过日历内容提供商中事件的键索引您的额外属性?这样,您就可以在应用的数据和公共联系人内容提供商数据之间建立关联。