2011-08-07 13 views
0

我正在嘗試使用同步適配器將我的聯繫人與網絡存儲同步。 當我問服務器在服務器端的任何contactupdates時,我得到所有添加/更改的新信息的列表。要更新他們我使用的首選方法描述here如何更新聯繫人而不刪除已存儲的數據?

我的問題是,當我做一個ContactOperations.newUpdate()並與所有的新的/改變的信息我從網絡服務器得到餵養它,然後將其應用到ContactsContract.AUTHORITY所有信息已存儲在手機上的內容被刪除?!?

我讓打一個比方認爲明確:

我有救了我的手機命名上的聯繫:John「達迪」李四。現在,SyncAdapter被系統調用,他向服務器請求任何聯繫變更,服務器說現在這個聯繫人的姓氏是「Jones」。有了這些信息,我構建了一個新的ContactProviderOperation.newUpdate()並通過.withValue()提供並應用它。但Android真正做的是:刷新所有其他列,現在我的聯繫人被命名爲「Jones」(givenName和middleName缺少-.-)。

有什麼辦法可以防止Android這樣做嗎?我可以通過任何參數,如CALLER_IS_SYNCADAPTER?或者,我是否需要制定自己的解決方法(希望不是),如先閱讀數據記錄,應用更新,然後將其應用於ContactsContract.AUTHORITY

任何提示真的很感激!

/編輯:我做了進一步的研究,通過觀察SyncAdapterExample,特別是在「更新聯繫人」雙組分,但我所看到的有點讓我震驚:谷歌實際上並讀取聯繫人,然後再應用更新從服務器上重新申請到ContactsContract.AUTHORITY。但他們只處理名字和姓氏,一個電子郵件和兩個電話(正常和移動)。在我的情況下,我不想處理所有的聯繫信息,所以做這樣的解決方法是不可行的,除非沒有別的辦法,我不希望這樣做。希望有人能爲我帶來正確的方向。

回答

相關問題