android 联系人 中英文排序 --代码仓库

本文介绍了如何在Android中实现联系人中英文按拼音排序。通过设置`ContactsContract.Contacts.DISPLAY_NAME COLLATE LOCALIZED ASC`或`sort_key_alt asc`,可以达到预期效果。当使用`sort_key_alt asc`时,中英文会混排并按顺序排列。同时,文章揭示了Android自带通讯录数据库的`sort_key`字段在处理中英文排序和搜索中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.dbraw_contacts表。用sqlitedbviewer工具打开后可以看到有这么一个字段:sort_keysort_key_alt与之相似,只不过是英文环境下有个按given name还是first name排序的问题)。

正常状况下,我们新建一个联系人的话,如果是英文,则sort_keydisplay_name字段显示相同,如果输入姓名是中文,如“你好”,sort_key则会显示“ni  hao 好”,这样开发者既可以根据此字段按拼音排序,中英文混排,以及按拼音搜索联系人。

详情,请参阅  http://blog.youkuaiyun.com/csuhanyong/article/details/6120935



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值