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