关于手机联系人的中文字母排序问题

现在不管是手机自带的通讯录还是一些app的通讯录都有联系人,里面的联系人大多数都是一些a-z的名称来进行排序的。还有开发者没有研究过类似的问题不知道如何来解决这个问题。那么下面我来说下 。通过查找系统的联系人数据,来获得数据,需要注意里面的一个字段sort_key,这个字段里面存着联系人的名称和转换过来的英文字母。例如,ZHANG张GUO果FENG凤。

private List<ContactInfo> getInfors() {
ContentResolver resolver = getActivity().getContentResolver();
String[] projection = { Phone.CONTACT_ID, “sort_key”,
Phone.DISPLAY_NAME, Phone.NUMBER, Phone.PHOTO_ID };
Cursor cur = resolver.query(Phone.CONTENT_URI, projection, null, null,
” sort_key COLLATE LOCALIZED ASC”);
// ArrayList<ContactInfo> phones = new ArrayList<ContactInfo>();
ArrayList<ContactInfo> contactList = null;
// LogUtil.info(ContactsActivity.class, “getInfors start”);
cur.moveToNext();
while (cur.getCount() > cur.getPosition()) {
ContactInfo contactInfo = new ContactInfo();
List<String> phone = new ArrayList<String>();
String number = cur.getString(cur.getColumnIndex(Phone.NUMBER));
number = number.replaceAll(“-“, “”);
number = number.replaceAll(” “, “”);
String contactID = cur.getString(cur
.getColumnIndex(Phone.CONTACT_ID));
String name = cur.getString(cur.getColumnIndex(Phone.DISPLAY_NAME));
String photo_id = cur.getString(cur.getColumnIndex(Phone.PHOTO_ID));
String sort_key = cur.getString(cur.getColumnIndex(“sort_key”));
contactInfo.setContractID(contactID);
// 名字不存在的时候,把电话号码当做名字显示
if (!TextUtils.isEmpty(name)) {
contactInfo.setName(name);
} else {
contactInfo.setName(number);
}
contactInfo.setPhotoId(photo_id);
contactInfo.setSortKey(sort_key);
if (number.startsWith(“+86”)) {
number = number.substring(3, number.length());
}
phone.add(number);
contactInfo.setPhone(phone);
contactInfo.setFormattedNumber((name + “”));
if (contactList == null) {
contactList = new ArrayList<ContactInfo>();
}
contactList.add(contactInfo);
cur.moveToNext();
}
return contactList;
}

经测试一般的机型返回的数据都是有英文字母和中文字幕混合的,这样的话我们可以进行排序。然而,这里要说的就是小米机型,它返回的数据是没有英文的需要只有中文,例如,搞运维只会返回搞运维。所以这个时候就需要我们手动去转换了,《关于手机联系人的中文字母排序问题》这个包里面的方法会将中文转换成拼音。

《关于手机联系人的中文字母排序问题》

我们获得了数据info创建一个和他同等大小的数组。通过调用回调接口来转换它的值,对比它的编码来进行排序。contactInfo和contactlist一样是存储联系人的list集合。

《关于手机联系人的中文字母排序问题》

《关于手机联系人的中文字母排序问题》

其实挺简单的,把需要的jar和类上传了 ,不明白可以联系我。等有时间做一个简单的demo

    原文作者:answer艾
    原文地址: https://blog.csdn.net/u010231404/article/details/48373145
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞