联系人:无需选择重复的电话号码

时间:2011-07-31 19:40:06

标签: android android-contacts

我正在尝试使用电话号码选择手机上的所有联系人。但是,如果某人拥有相同的电话号码,则同一个联系人两次,它会出现两次,因为它有不同的Phone._ID。有没有办法消除查询中重复数字的选择:

  

Uri uri = Data.CONTENT_URI;

    String[] projection = new String[] {
            Data._ID,
            Phone._ID,
            Phone.LOOKUP_KEY,
            Data.CONTACT_ID,
            Data.RAW_CONTACT_ID,
            Phone.NUMBER,
            Data.DISPLAY_NAME,
            Phone.LABEL,
            Phone.TYPE,
            Phone.PHOTO_ID
    };
    String selection = Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE+"'";
    String[] selectionArgs = null;
    String sortOrder = Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC";

return managedQuery(uri, projection, selection, selectionArgs, sortOrder);

或者,在选择后的过程中? 不太挑剔......

1 个答案:

答案 0 :(得分:2)

在纯SQL中,您可以在有序选择上指定UNIQUE。我不知道内容提供商是否可以。如果没有,请使用升序电话号码和姓名的订单。将moveToNext名称与最后一个“新”名称进行比较。如果您使用的是while循环,请在匹配时继续。

    String goodName = "";
    String goodNumber = "";

    while (cursor.moveToNext()) {
        ... get name and number from cursor ....

        if (goodNumber == contactNumber) {
            if (contactName == goodName) {
                continue;
            }
        }

        goodNumber = contactNumber;
        goodName = contactName;
        ... do more work ....