2012-07-23 83 views
1

我想在我的应用程序中将手机通讯录(姓名和电话号码)与我的contentProviver“通讯录”同步。所以我搜索并找到两种方法:ContentOberver和SyncAdapter。与应用程序同步手机通讯录

在我的情况下,我不需要与Internt进行连接,因此我只与我的应用程序的数据库同步。如果用户删除了我想要在我的数据库中删除的联系人,则更新或插入时也是如此。

因此ContentObserver是这种情况下更好的方法吗?

有一种方法可以知道联系人的关键?就像db中一行的关键字一样。如果是的话,我可以频繁更新我的数据库(用户可以选择时间)。

回答

0

如果您想添加标记为应用程序联系人的联系人,则需要同步适配器。 如果您未添加同步适配器,则不会显示联系人。 添加同步适配器时,您还需要身份验证器。您可以使用一个虚拟身份验证器,始终添加相同的用户而不向用户询问任何内容。 您需要考虑的一点是,如果没有互联网连接,同步适配器将永远不会被触发。出于这个原因,当数据发生变化时,您需要手动触发同步。

要做类似于你所描述的事情,我开发了一个同步适配器,同时也可以直接触发同步器,并通过ContentObserver知道用户何时删除本地通讯录中的联系人。

如果您的同步只是一种方式,这意味着您不需要从应用程序插入/修改您不需要同步适配器。

+0

在我的应用程序中,用户可以选择一些集体呼叫(如白名单),所以我只需要在我的应用程序中读取联系人。我的数据库应该有相同的手机联系人数据库,因此当用户更改名称时,联系人会自动更改名称。 – weldsonandrade 2012-07-23 19:55:44

+0

我看起来更深入ContentObserver,我认为这对我的目的不起作用,因为我必须将其注册,但我可以使用警报周期性地初始化。 – weldsonandrade 2012-07-23 19:58:25

+0

你认为我必须做什么? – weldsonandrade 2012-07-23 19:58:59