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

Android 如何获取与该联系人姓名关联的所有联系人号码,android,android-contentprovider,android-contacts,Android,Android Contentprovider,Android Contacts,我一直在尝试使用复选框制作多联系人选择器列表。我已经创建了多联系人选取器,联系人中至少有一个电话号码 魁北克 现在我在ListView中添加了联系人。但联系人中只显示了一个联系人号码,这是保存在contact应用程序中的第一个电话号码。我在联系人列表中添加了LinkedHashMap和Set,以添加索引器 LinkedHashMap或Set是否正在从集合中删除重复值 如何获取与该联系人姓名关联的所有电话号码 代码段:- ContentResolver cr = getContentResolve

我一直在尝试使用复选框制作多联系人选择器列表。我已经创建了多联系人选取器,联系人中至少有一个电话号码

魁北克 现在我在
ListView
中添加了联系人。但联系人中只显示了一个联系人号码,这是保存在
contact
应用程序中的第一个电话号码。我在联系人列表中添加了
LinkedHashMap
Set
,以添加
索引器

LinkedHashMap
Set
是否正在从集合中删除重复值

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

代码段:-

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());

目前为止,这只是一个临时补丁,我一直在尝试在
android.provider.contacts contract
中添加与同一联系人相关的所有联系人号码

我在bean中添加了与同一联系人相关的所有联系人号码,方法是添加
分隔符(“,”)
,我可以使用
标记器将其取回。但不知道是哪种类型的接触,无论是家庭、工作、办公室,到目前为止对我来说都不那么重要

修正:

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 "(-/,"
    }
}