Android获取手机通讯录-根据排序方式进行

获取手机通讯录要求和手机上的通讯录软件排序一样,即使手机通讯录更改了排序方式和显示方式 `名字和姓氏的方式 ` 

在英文模式下可以进行更改联系人设置,由于安卓系统已经将获取联系人排序方式这个取消掉了,所以部分安卓手机也就没有提供这个更改联系人排序这个功能,通过查看源码可知新版本中关于联系人排序的参数放在 SharePreference的privatemode中。

获取系统的排序方式

根据下面代码能够获取到当前系统的排序参数,这个参数在大部分系统中被屏蔽不能获取,经过测试在小米的miui上面可以拿到,这样久能保证和系统的排序一致的方式显示通讯录

        try {
            sortOrder = Settings.System.getInt(contentResolver, "android.contacts.SORT_ORDER")
            Toast.makeText(this, "Have SortOrder " + sortOrder.toString(), Toast.LENGTH_SHORT).show()
        } catch (e: Exception) {
            Toast.makeText(this, "No SortOrder " + e.message, Toast.LENGTH_SHORT).show()
            e.printStackTrace()
        }

获取联系人

获取联系人,按照默认排序,根据从上面拿到的 sortOrder看直接获取。当sortOrder能够拿到的时候在小米miui上面不是1则说明不是按照默认排序,那么使用 SORT_KEY_ALTERNATIVE 顺序获取联系人列表

    fun getContacts(): ArrayList<String> {
        // 联系人的Uri,也就是content://com.android.contacts/contacts
        val uri = ContactsContract.Contacts.CONTENT_URI
        //指定获取_id和display_name两列数据,display_name即为姓名
        val projection = arrayOf(ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME)
        val sortOrderStr = when(sortOrder){
            1 -> {
                ContactsContract.Contacts.SORT_KEY_PRIMARY + " COLLATE LOCALIZED asc"
            }
            else -> {
                ContactsContract.Contacts.SORT_KEY_ALTERNATIVE + " COLLATE LOCALIZED asc"
            }
        }

        val cursor = contentResolver.query(uri, projection, null, null, sortOrderStr)
        val arr = arrayListOf<String>()
        var i = 0
        if (cursor != null && cursor.moveToFirst()) {
            do {
                val id = cursor.getLong(0)
                // 获取姓名
                val name = cursor.getString(1)
                // 指定获取NUMBER这一列数据
                val phoneProjection = arrayOf(ContactsContract.CommonDataKinds.Phone.NUMBER)
                arr.add(i, id.toString() + " , 姓名:" + name)

                // 根据联系人的ID获取此人的电话号码
                val phonesCusor = this.contentResolver.query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        phoneProjection,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + id,
                        null,
                        null)

//                //因为每个联系人可能有多个电话号码,所以需要遍历
                if (phonesCusor != null && phonesCusor.moveToFirst()) {
//                    do {
                        val num = phonesCusor.getString(0)
                        arr[i] += " , 电话号码:$num"
//                        break
//                    } while (phonesCusor.moveToNext())
                }
                i++
            } while (cursor.moveToNext())
        }
        cursor.close()
        return arr
    }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,265评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,274评论 1 288
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,087评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,479评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,782评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,218评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,594评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,316评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,955评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,274评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,803评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,177评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,732评论 3 229
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,953评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,687评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,263评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,189评论 2 258

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,537评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,457评论 2 59
  • ​​ 文 | 林清玄 原标题《猫头鹰人》 在信义路上,有一个卖猫头鹰的人,平常他的摊子上总有七八只小猫头鹰,最多的...
    大尉说说阅读 735评论 0 1
  • 你经历过那种拼了命的努力也达不到心愿的事吗,我经历过。 高一那年挺滋润的,班里第二,没什么野心的我觉得也好,第二年...
    苏恪阅读 401评论 0 0
  • 诗圣故里不怀古 草堂陋室不阅书 谈笑应有鸿儒在 白丁呱噪何其辜
    寂静彡暖阳阅读 162评论 0 0