联系人备份和同步应用程序

Uda*_*yan 5 android contacts rawcontacts android-contacts contentobserver

我正在进行联系人备份和同步.

目标是将所有联系人的所有详细信息发送到服务器(定义的自定义协议)作为备份.

在首次启动应用程序期间,所有联系人都将排队并发送到服务器.之后,后台服务将一直运行,将收听新的联系人添加/联系人更新,这个新的/更新的联系人将由后台服务发送到服务器.

我正在使用RawContactsEntity来获取记录.

我尝试ContentObserver在RawContacts/Data表上使用以获取联系人添加或联系人更改的通知.但是,AFAIK,在整个表格中ContentObserver给出onChange()了已更改数据的通知(),而不是单个记录的ID.

现在我的问题是,如何获得更改/新记录的确切ID?

我想创建一个备份表来与本机联系人表进行比较并获取更改的记录.但随着接触次数的增加,性能会急剧下降,这也会妨碍电池的使用寿命.

你能否建议我,从性能和内存使用的角度来看,实现这种联系备份操作的最佳方法是什么?联系人同步操作还有其他方法吗?

如果有人可以分享可以帮助我的例子,将会非常有帮助.

Ank*_*mar 0

如果联系人存储在您的帐户(AccountManger)中,Android 将在原始联系人中标记脏标志。如果这不是您的帐户,则您不能信任脏标志,因为帐户同步适配器可能已将联系人更新到服务器并重置脏标志。您唯一的选择是重新上传完整的联系人(简单且易于编码)或跟踪 RawContacts 中的版本列并检查哪一个已更改。实际上不建议从其他帐户复制和上传联系人,因为相应的同步适配器无论如何都会维护这些联系人的备份。就像谷歌一样,他们的服务器上也会有谷歌联系人的副本。