在写安卓程序的时候,需要获取联系人的信息,需求是根据联系人姓名拼音的首字母查询联系人的信息,也就是说给定一个字母,要查出所有的拼音以该字母开头的联系人。在网上看了好多博客,都建议说使用SORT_KEY_PRIMARY字段,看了下Android源码,该字段返回的的确是拼音拼写,然而我用的时候,它返回的还是联系人的名称,没有拼音!可以使用它排序联系人,但无法实现检索功能!说明一下,我用的是Android6.0系统。我百思不得其解,为什么呢?再看了一下那些博客的时间,都是14年或者更早的。然后我又搜了一下Android6.0版本的联系人查询方法,终于在一篇博客中找到了答案,使用“phonebook_label”字段,它可以返回联系人名称的首字母,使用它就可以完成我们的功能了。附代码片段:

private static final String PHONE_BOOK_LABEL = "phonebook_label";
private void query(String firstLetter){try {Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;String[] projection = new String[] {  ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER,PHONE_BOOK_LABEL};String selection = PHONE_BOOK_LABEL + " = '" + firstLetter + "' and " + ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER + " = '1'";Cursor cursor = getContentResolver().query(uri, projection, selection, null, ContactsContract.CommonDataKinds.Phone.SORT_KEY_PRIMARY);while(cursor.moveToNext()) {String contactPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));String name = cursor.getString(0);contactPhone = contactPhone.replace(" ", "");if(contactPhone.length() >= 11){contactPhone = contactPhone.substring(contactPhone.length() - 11, contactPhone.length());if(Pattern.matches("^1[0-9]{10}$", contactPhone)){System.out.println("{name : " + name + "; mobile : " + contactPhone + "}");}}}if(cursor != null){cursor.close();}} catch (Exception e) {e.printStackTrace();}}

参考博客链接: http://blog.csdn.net/chenkai19920410/article/details/50167307

Android按照拼音排序获取联系人并根据拼音首字母获取联系人相关推荐

  1. Android通讯录模糊匹配搜索实现(号码、首字母、简拼、全拼)

    Android通讯录模糊匹配搜索实现(号码.首字母.简拼.全拼) 2013年12月10日 工作记录 小巫在工作中碰到一个需求,要求实现通讯录联系人的搜索,获取联系人的方式有好几种,我都有点混乱了,下面 ...

  2. 【如何通过汉字首字母拼写查询数据】mysql数据库汉字首字母获取查询或通过ES插件elasticsearch-analysis-pinyin进行汉字首拼查询

    一.mysql数据库汉字首字母获取查询 1.汉字提取首字母 get_first_pinyin_char: 此函数是将一个中文字符串的第一个汉字转成拼音字母 (例如:"李"-> ...

  3. PHP 获取第一个汉字大写首字母

    PHP 获取第一个汉字大写首字母 /*** MethodName:获取第一个汉字大写首字母* Comment:*/ function getFirstCharters($str) {if (empty ...

  4. mysql中英文拼音首字母获取及排序

    需求 在数据库中需要根据用户名按a-z排序: 方式一 因为我们通常使用的编码都是utf-8;所以直接排序并不是按照我们所期待的拼音从a-z排序;我们需要将字符转换成gbk即可: select * fr ...

  5. c语言中文拼音排序,为sqlite增加汉字拼音排序功能

    此文已由作者严跃杰授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Sqlite3是一款C语言实现的小型SQL数据库引擎,它体积小巧但功能强大, 性能表现也非常不错, 因此在客 ...

  6. Android 获取一段字符串的首字母的解决方案

    最近的项目需要一个功能,将城市名称按首字母查询并加入索引,百度.谷歌了好久,看到的文章解决方案大概相同,就是:通过汉字对应的国际一级汉字区位码进行获取首字母,但是目前一级区位码收录的汉字并不是特别多, ...

  7. java 中文联系人排序_通讯录之按汉字首字母排序-java

    最近开发手机端OA系统通讯录时遇到了用汉字首字母排序的问题,各种谷歌后发现了一个轮子pinyin4J,这个轮子是可以将汉字转换成字母拼音,个人觉得很好用,完美的解决了排序的问题,分享一下. 一.工具介 ...

  8. java中获取中文拼音(全拼)和中文首字母

    目录 一.引入依赖 二.代码 三.解释 1.创建格式化对象HanyuPinyinOutputFormat 2.设置输出结果的大小写格式 3.设置声调格式 4.进行汉字转拼音操作 四.作用 一.引入依赖 ...

  9. php 按汉字拼音排序,php 数组按中文拼音排序

    本篇文章给大家分享的内容是关于php数组按中文拼音排序,有着一定的参考价值,有需要的朋友可以参考一下 $str = "我们可以在浏览器中看到,当鼠标移到元素上时,元素开始向右移动,开始比较慢 ...

最新文章

  1. Nmap扫描参数解析(转)
  2. 如何使用ABBYY FineReader 12将JPEG文件转换成Word文档
  3. q7goodies事例_Java 8 Friday Goodies:本地交易范围
  4. 17 岁的程序员告诉你关于编程的 7 个重要教训!
  5. PHP大转盘中奖概率算法实例
  6. 删除安装的python
  7. BlockingQueue的核心方法
  8. Anaconda 安装步骤
  9. Flex笔记_格式化数据
  10. Mac下查看公网以及内网IP地址
  11. 抢票 | AI未来说学术论坛第11期 信息检索与知识图谱专场
  12. 群晖、黑群晖安装emby很慢,或者卡0%的解决办法,请收藏
  13. laravel 浏览器谷歌network返回报错html
  14. 基于51单片机的电子密码指纹锁无线WiFi通信原理图PCB
  15. 图片大小自适应QImage::scaled ()
  16. 前端js调用摄像头进行录像并传到后端
  17. 微服架构基础设施环境平台搭建 -(五)Docker常用命令
  18. 不为人知的腾讯创业史---蜗牛创业网
  19. BZOJ 4327 【JSOI 2012】 玄武密码 AC自动机+dfs
  20. C++(Qt) 和 Word、Excel、PDF 交互总结

热门文章

  1. 菜鸟驿站是如何实现详细地址的省市区街道区分的?教你使用Python完成地址的模糊匹配
  2. 锐动SDK置于社区沙龙
  3. wikisql 数据集解释_Wiki语料处理
  4. Linux预科知识之认识计算机硬件——网卡声卡
  5. 如何画一个简单的波特图(渐近线近似零极点特性)?
  6. deepinv2 添加打印机_【小教程】如何在deepin操作系统中配置打印机
  7. jop怎么读音英语怎么说_英语单词job怎么读,job的音标是什么,job是什么意思 - 音标网...
  8. 如何输入一个二进制:在开头+0b
  9. 【教程】基于resnet的中草药识别小程序_python_CNN图像识别
  10. Gopher Daily (2020.05.19) ʕ◔ϖ◔ʔ