1、 有效代码:
Cursor cursor = context.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI,null,
null,
null,
/*ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC"*/"sort_key_alt asc");
ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC" 效果,先显示英文,后显示中文,英文正确排序, 中文乱序
"sort_key_alt asc“ 效果 中英文混排,按顺序排列
2、原理
android.2自带通讯录的数据库文件contacts2.db的raw_contacts表。用sqlitedbviewer工具打开后可以看到有这么一个字段:sort_key(sort_key_alt与之相似,只不过是英文环境下有个按given name还是first name排序的问题)。
正常状况下,我们新建一个联系人的话,如果是英文,则sort_key与display_name字段显示相同,如果输入姓名是中文,如“你好”,sort_key则会显示“ni 你 hao 好”,这样开发者既可以根据此字段按拼音排序,中英文混排,以及按拼音搜索联系人。
详情,请参阅 http://blog.youkuaiyun.com/csuhanyong/article/details/6120935
本文介绍了如何在Android中实现联系人中英文按拼音排序。通过设置`ContactsContract.Contacts.DISPLAY_NAME COLLATE LOCALIZED ASC`或`sort_key_alt asc`,可以达到预期效果。当使用`sort_key_alt asc`时,中英文会混排并按顺序排列。同时,文章揭示了Android自带通讯录数据库的`sort_key`字段在处理中英文排序和搜索中的作用。
4225

被折叠的 条评论
为什么被折叠?



