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

时间:2012-10-29 11:36:07

标签: android contacts contactscontract accountmanager rawcontacts

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

我正在寻找正确的方法来查询电话联系人列表中每个联系人的列表/光标,这些联系人列表中附有其中一个新帐户。我希望获得整个联系人,以便我可以检索他们的电话号码,显示姓名和图片的uris等内容,但我只需要附上我新帐户的联系人。

我有一种感觉,我需要连接两个表以及一些投影或选择参数,以便在一个游标对象中获取所有这些数据。我只是不确定如何做到这一点,虽然我已经尝试了很多不同的东西,即能够获取所有联系人,或者我的特定帐户类型的所有RawContact行,但不能同时使用。{ / p>

由于

1 个答案:

答案 0 :(得分:3)

获取与帐户类型和名称匹配的所有联系人的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相关的所有数据。

有关ContactsContract.Data表的结构及其所拥有的数据,请参阅the documentation