让我试着阐明我的 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/