我一直试图用复选框创建多联系人选择列表。我已经创建了Multi Contact Picker,联系人在其联系人中至少有一个电话号码。
现在我已在ListView
添加了联系人。但是联系人显示单个联系人号码,它接收保存在Contact
应用程序中的第一个电话号码。我添加了LinkedHashMap
& Set
在联系人列表中添加indexer
。
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());
答案 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 "(-/,"
}
}