2012-02-20 69 views
12

我們怎麼能把一些額外的數據,如文件,照片,一個簡單的字符串等,日曆事件..如何私人數據附加到Android的Google日曆事件

我使用的擴展性能,並能夠通過插入一些額外的數據擴展屬性

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(冰CR測試相同的代碼eam三明治)。它拋出一個錯誤,指出只有同步適配器才能訪問content://com.android.calendar/extendedproperties。

所以我執行查詢爲「callerissyncadapter」。現在我可以插入擴展屬性。但是,一旦事件同步到服務器,擴展屬性正在被服務器刪除。

即使這些擴展的屬性不完全日曆提供商都支持(谷歌以外)

有什麼辦法附加一些額外的數據日曆等事件比extendedproperties或者我們可以利用這個擴展屬性的一個更好的方法。

回答

0

除非您確實是同步適配器,否則請不要使用callerissyncadapter。將其設置爲true將導致設備上的內容觀察者不會收到該提供程序中內容更改的通知,並且您的更改不會持久保存到服務器。

你爲什麼要這麼做?您是否嘗試將某些數據與您的應用與日曆活動關聯?

如果是這樣,爲什麼不用你的應用程序創建你自己的私人數據存儲(或內容提供者),並通過日曆內容提供者中事件的關鍵字來索引你的額外屬性?這樣,您的應用數據與公共聯繫人內容提供商數據之間就存在關聯。

+0

沒有可靠的方法來保持私人商店中的事件的關鍵。如果您再次移除並添加活動的帳戶,則事件的_id和_sync_id可能會發生變化,例如,交換型帳戶。 – OferR 2014-05-07 04:00:00

相關問題