android - 检索所有附加了特定帐户的联系人

标签 android contacts contactscontract accountmanager rawcontacts

我正在制作一个通信应用程序,该应用程序已在 AccountManager 中设置了特定的帐户类型,并附加了一个 SyncAdapter。我的几个联系人都有一个 RawContact,其中包含我的新帐户的 MIMETYPE 和一些相关数据。

我正在寻找正确的方法来查询电话联系人列表中每个联系人的列表/光标,这些联系人列表中附加了这些新帐户之一。我想获取所有联系人,以便我可以执行一些操作,例如检索他们的电话号码、显示名称和图片的 uri,但我只需要附加了我的新类型帐户的联系人。

我有一种感觉,我需要将两个表与一些投影或选择参数连接在一起,以便在一个游标对象中获取所有这些数据。我只是不确定该怎么做,尽管我已经尝试了很多不同的事情,即能够获取所有联系人,或者我的特定帐户类型的所有 RawContact 行,但不能同时获取两者在一起。

谢谢

最佳答案

获取与帐户类型和名称匹配的所有联系人的 Raw_Id:

    getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI,
                                 new String[]{ContactsContract.RawContacts._ID,
                                 },
                                ContactsContract.RawContacts.ACCOUNT_NAME + " = ? AND " +
                                ContactsContract.RawContacts.ACCOUNT_TYPE + " = ? ",
                                new String[]{mAcccountName,mAccountType},null
                             );

对于每个 _ID,从 ContactsContract.Data 中获取所有行,ContactsContract.RawContacts._ID 匹配 ContactsContract.Data.RAW_CONTACT_ID 在这里。

这些行包含与该联系人的 Raw_id 相关的所有数据。

引用the documentation ContactsContract.Data 表的结构,以及它包含的数据。

关于android - 检索所有附加了特定帐户的联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13120851/

相关文章:

android - 从 Unity 访问 Android Camera.Parameters

Android - 将 ImageView 动态添加到 ScrollView

android - 使用 tensorflow 和 ML 套件通过声音识别人

php - Gmail、Yahoo、Facebook、Twitter 在 PHP 中联系进口商

ios - 如何使用联系人框架在 iOS 9 中获取所有联系人记录

javascript - fcm firebase 函数未定义值 - 第一次尝试,已定义 - 第二次尝试

android - 从联系人列表中选择联系人并为该联系人选择特定的电子邮件

安卓 : Adding Notes to Existing Contacts

Android ContactsContract 类 : How to ignore non-primary ACCOUNT_TYPES?

android - 如何加载联系人照片?