如何获取与该联系人名称相关联的所有联系号码

时间:2014-05-05 06:17:08

标签: android android-contentprovider android-contacts

我一直试图用复选框创建多联系人选择列表。我已经创建了Multi Contact Picker,联系人在其联系人中至少有一个电话号码。

现在我已在ListView添加了联系人。但是联系人显示单个联系人号码,它接收保存在Contact应用程序中的第一个电话号码。我添加了LinkedHashMap& Set在联系人列表中添加indexer

LinkedHashMapSet是否从集合中删除了重复的值?

如何获取与该联系人姓名相关联的所有电话号码?

代码段: -

ContentResolver cr = getContentResolver();
    String selection = Data.HAS_PHONE_NUMBER + " > '" + ("0") + "'";

    Cursor cur = cr.query(Data.CONTENT_URI, new String[] { Data.CONTACT_ID, Data.MIMETYPE, Email.ADDRESS,
            Contacts.DISPLAY_NAME, Phone.NUMBER }, selection, null, Contacts.DISPLAY_NAME);


     Contact contact;
    if (cur.getCount() > 0) {

        while (cur.moveToNext()) {

            String id = cur.getString(cur.getColumnIndex(Data.CONTACT_ID));

            String mimeType = cur.getString(cur.getColumnIndex(Data.MIMETYPE));

            if (allContacts.containsKey(id)) {
                // update contact
                contact = allContacts.get(id);
            } else {
                contact = new Contact();
                allContacts.put(id, contact);
                // set photoUri
                contact.setContactPhotoUri(getContactPhotoUri(Long.parseLong(id)));
            }

            if (mimeType.equals(StructuredName.CONTENT_ITEM_TYPE))
                // set name
                contact.setContactName(cur.getString(cur.getColumnIndex(Contacts.DISPLAY_NAME)));

            if (mimeType.equals(Phone.CONTENT_ITEM_TYPE))
                // set phone munber
                contact.setContactNumber(cur.getString(cur.getColumnIndex(Phone.NUMBER)));
        }
    }

    cur.close();
    // get contacts from hashmap
    contacts.clear();
    contacts.addAll(allContacts.values());

1 个答案:

答案 0 :(得分:0)

截至目前,这只是一个临时修复,我一直在尝试在android.provider.ContactsContract内添加与相同联系人相关联的所有联系号码。< / p>

我已添加相同联系人相关联的所有联系电话号码,方法是附加delimiter(",")我可以使用Tokenizer取回。但不知道是什么类型的联系方式,无论是家庭,工作,办公室,它对我来说都不那么重要了。

修正:

if (mimeType.equals(Phone.CONTENT_ITEM_TYPE)){
// set phone number
    if (contact.getContactNumber().toString().length() == 0) {                   
         contact.setContactNumber(cur.getString(cur.getColumnIndex(Phone.NUMBER)).replaceAll("\\D", ""));
    } else {                      
         contact.setContactNumber(contact.getContactNumber().toString().concat(", ").concat(cur.getString(cur.getColumnIndex(Phone.NUMBER)).replaceAll("\\D", "")));//One can add possible contacts "(-/,"
    }
}