安卓联系人 : Is it possible to reference a given contact entry using a URN?

标签 android sqlite android-contacts

让我试着阐明我的 Intent 。

我正在开发一个可以访问 Android 联系人提供程序的应用程序。我已经实现了一种机制,用于从联系人提供程序中提取联系人并将结果存储在 SQLite 表中。目前,当我查询联系人 _ID 的结果时,我可以检索该联系人的所有数据、电话号码、电子邮件地址等。

但是,为了指定我的应用在未来的场合应该使用哪些,我必须将生成的联系人数据(例如 CommonDataKinds.Phone.NUMBER、CommonDataKinds.Phone.TYPE 等)存储在 SQL 表中。

如果 Android 联系人提供程序中的数据已更改,则会出现问题。我考虑过的一种解决方案是重新查询 _ID 并存储已更改的数据。但是,实现此类解决方案需要收集该联系人的所有数据,因此很难确定要使用的正确联系人数据。

我的问题是:

在 Android Provider 的联系人数据中是否使用了一个唯一的记录键,就像在 Provider 的联系人条目中一样?相当于 Contact._ID 的电话号码或电子邮件地址?

否则,Android 联系人提供程序会存储最后修改的日期和时间吗?我希望,如果我无法引用提供商中的联系人数据,我至少可以运行检查以查看自从选择联系人用于应用程序后是否有任何更改,从而允许我的应用程序提醒用户数据已更改。

最佳答案

Yoi 可以在服务的帮助下使用 ContentObserver 来监视联系人更改或更新。

例如-

扩展contentObserver-

public class Contact_change extends ContentObserver

注册contentobserver-

Contact_change changeObserver = new Contact_change();
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true,chageobserver);

通过使用它,您可以监控联系人更改并更新您的数据库。

关于安卓联系人 : Is it possible to reference a given contact entry using a URN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31151014/

相关文章:

python - 需要帮助识别涉及 matplotlib 和 Flask 的内存泄漏

android - 如何通过在android中发送联系电话来获取联系人姓名?

java - Android 查找联系人时出错

android - 如何删除 Activity 中的空 Framelayout?

java - 尝试在空对象引用上调用虚拟方法 'android.view.Window$Callback android.view.Window.getCallback()'

c++ - 在 Sqlite C++ 中插入以下语句

android - Android 2.3 和 Android 4.0 上的联系人照片 uri

android - Unity 应用程序在 Google Tango 设备上崩溃

java - 使用谷歌最新 API 时的 Gradle 错误

java - 如何从 sqlite 中检索列并将其存储到数组中?