2015-11-03 47 views
0

如果聯繫人發生任何更改,我正在處理將聯繫人上載到服務器的功能。 我發現的一種方法是查詢ContactsContract.Data的DATA_VERSION列,並將每個聯繫人的版本保存到應用程序特定的共享首選項,稍後在requery表中檢查是否存在任何版本不匹配。確定通訊錄是否在Android上更改

但是,這顯然太重了,因爲我需要的僅僅是一個布爾值,而不管整個聯繫人書是否被觸動。

注意我無法通過ContentObserver來完成此操作,因爲地址簿可能會在應用程序未運行時更改。

有沒有辦法爲整個地址簿生成一個支票金額並在稍後檢查?

+0

您應該看到:http://stackoverflow.com/questions/5733775/broadcast-on-contact-add-change –

+0

@ eric247表示沒有解決問題,在帳戶同步後,髒字段被清除,這發生在修改聯繫人後幾分鐘。雖然我需要檢查當前的通訊錄是否與以前不同(前兩天可能會觸及)。 –

回答

0

嗯,我想我會自己回答這個問題。我最終只是查詢Data.CONTACT_LAST_UPDATED_TIMESTAMP並將最新的時間保存在共享首選項中。下一次只需用時間晚於保存時間的條目查詢表格。這可能會再次遍歷整個表格,但肯定比緩衝所有版本更快,更高效