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

Sai*_*esh 13 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);
Run Code Online (Sandbox Code Playgroud)

然后能够像下面那样检索这些数据

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

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

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

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

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

War*_*lax 1

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

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

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