13

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

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

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(冰淇淋三明治)中测试,代码相同。它抛出一个错误,说只有同步适配器可以访问 content://com.android.calendar/extendedproperties。

所以我将查询作为“callerissyncadapter”执行。现在我可以插入扩展属性。但是一旦事件同步到服务器,服务器就会删除扩展属性。

日历提供者(谷歌除外)也不完全支持这些扩展属性

除了扩展属性之外,还有什么方法可以将一些额外的数据附加到日历事件,或者我们可以以更好的方式利用这些扩展属性。

4

1 回答 1

1

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

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

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

于 2013-12-28T00:45:46.883 回答