Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何确定添加联系人的位置?_Android_Service_Contacts_Intentfilter_Contentobserver - Fatal编程技术网

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

Android 如何确定添加联系人的位置?,android,service,contacts,intentfilter,contentobserver,Android,Service,Contacts,Intentfilter,Contentobserver,一段时间以来,我一直在努力寻找解决这个问题的方法。在添加联系人时(据我所知),不会触发任何意图操作。我有什么办法来解决这个问题 以下是我一直在玩弄的一些想法: 首先,我用时间戳记录用户位置,定期扫描Contacts数据库,并用时间戳向我自己的数据库添加新条目。然后我可以比较这些,并试图找到一个像样的匹配。我不喜欢这种方法,因为它很容易出错 最近,我一直在寻找Contacts DB的ContentObserver,但我不知道如何设置它,以便它能够不断观察,而不仅仅是在我的应用程序处于焦点时。也许在

一段时间以来,我一直在努力寻找解决这个问题的方法。在添加联系人时(据我所知),不会触发任何意图操作。我有什么办法来解决这个问题

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

  • 首先,我用时间戳记录用户位置,定期扫描Contacts数据库,并用时间戳向我自己的数据库添加新条目。然后我可以比较这些,并试图找到一个像样的匹配。我不喜欢这种方法,因为它很容易出错
  • 最近,我一直在寻找Contacts DB的ContentObserver,但我不知道如何设置它,以便它能够不断观察,而不仅仅是在我的应用程序处于焦点时。也许在服役?文档对我来说并不清楚内容观察者的生命周期,也就是说,它是否在注册它的服务/活动死亡之后死亡

  • 因此,我真正想要的是一种无缝的方式来记录在设备上安装我的应用程序时,用户在何时何地添加联系人。仅仅关注/运行应用程序是不够的。

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