如何确定联系人的添加位置?

时间:2012-10-20 21:03:00

标签: android service contacts intentfilter contentobserver

我一直在努力解决这个问题。添加联系人时没有触发Intent动作(据我所知)。我有什么选择来解决这个问题?

以下是我一直在玩的一些想法:

  1. 首先,我保留了带有时间戳的用户位置记录,并定期扫描Contacts DB并使用时间戳将新条目添加到我自己的DB中。然后我可以比较这些并尝试找到一个不错的比赛。我不喜欢这种方法,因为它很容易出错。
  2. 最近我一直在查看Contacts DB的ContentObserver,但我不知道如何设置它以便它会不断观察,而不仅仅是当我的应用程序处于焦点时。也许在服务中?关于内容观察者的生命周期,我不清楚文档,即它在注册它的服务/活动之后死亡了吗?
  3. 所以我真正想要的是一种无缝的方式来记录用户在我的应用程序安装在设备上时添加联系人的位置和时间。应用程序应该处于焦点/运行状态是不够的。

1 个答案:

答案 0 :(得分:0)

你的第二个想法是正确的。正如你所猜测的那样,观察者需要在服务中。在onCreate()中注册观察者。您将在contentObserver的onChange中使用contentProvider。您需要保持上次使用共享首选项读取数据库的时间。请注意存储在共享首选项中的时间之后条目的更改。现在将共享首选项的时间更新为当前时间。同时取消注册onDestroy()中的内容观察者。