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