android使用ContactsContract读取联系人详细信息

时间:2012-01-02 06:51:19

标签: android

我通过

查询联系人
private Cursor cursor;
private static final String SORT_ORDER = ContactsContract.Contacts.DISPLAY_NAME + " ASC ";

String[]   myProjection = new String[] { ContactsContract.Contacts._ID, 
            ContactsContract.Contacts.DISPLAY_NAME, 
            ContactsContract.Contacts.PHOTO_ID,
            ContactsContract.Contacts.HAS_PHONE_NUMBER,
            ContactsContract.Contacts.STARRED};

cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, myProjection, null, null, SORT_ORDER);

它给了我所有的联系方式详细信息。但我的问题是重复的联系方式。 就像我多次获得一些联系人详细信息。我认为一个来自我的手机联系人另一个是来自Facebook联系人和其他网站。我如何在我的详细信息中只显示同一个人的一个联系人。

我在一些博客中读过一些不同的投影,比如

ContactsContract.Contacts.Data.RAW_CONTACT_ID

和不同的URI

RawContacts.CONTENT_URI

任何人都可以建议我两个URI之间的差异。我需要查询ID,姓名,照片,电话号码,电子邮件,已加星标。

由于

1 个答案:

答案 0 :(得分:1)

要了解差异,您可以按照此页面操作: http://developer.android.com/reference/android/provider/ContactsContract.Intents.Insert.html

简而言之: 联系人(由CONTACT_ID标识)是虚拟的组合联系人。这是2.0联系人应用程序显示的内容,您可能从两个不同的Google帐户/和/或Facebook帐户中获取信息 给定联系人包含一个或多个“原始联系人”(由RAW_CONTACT_ID标识),它们是来自不同帐户的实际个人记录。

希望这可以解决你的困惑。