如何从联系人列表中获取姓名

我能够从联系人列表中获取用户电话号码,但我也需要带有电话号码的姓名,

我知道如果我使用自定义适配器,那么我可以同时获得姓名和电话号码,但是我想使用默认的联系人选择器。

这是我的代码。

private fun launchMultiplePhonePicker() {
    val phonebookintent = Intent("intent.action.INTERactION_TOPMENU")
    phonebookintent.putExtra("additional","phone-multi")
    phonebookintent.putExtra("maxRecipientCount",20)
    phonebookintent.putExtra("FromMMS",true)
    startactivityForResult(phonebookintent,110)
}

这确实可以正常工作,但是只返回电话号码,而不返回onactivityResult中的联系人姓名。

override fun onactivityResult(requestCode: Int,resultCode: Int,data: Intent?) {

       val bundle = data?.extras
       val result = bundle?.getString("result")
       val contacts = bundle?.getStringArrayList("result")
}

编辑: 我发现intent.action.INTERactION_TOPMENU可能无法在所有设备上使用,因此我使用了以下方法,它给我起了带数字的姓名,但不允许我选择多个联系人。

val intent = Intent(Intent.actION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI)
    startactivityForResult(intent,10101)
jgkzh 回答:如何从联系人列表中获取姓名

如果您有电话号码列表,并且需要获取显示名称,则可以使用ContactsContract.PhoneLookup,如下所示:

private fun phoneToName(phone: String): String? {
    val uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(phone))
    var cur = getContentResolver().query(uri,arrayOf(PhoneLookup.DISPLAY_NAME),null,null)
    if (cur.moveToFirst()) {
        return cur.getString(0)
    }
    cur.close()
    return null
}

P.S。请注意,“ intent.action.INTERACTION_TOPMENU”不是官方的Android API,并且可能不受所有设备的支持。

编辑:没有正式的方法可以使用电话选择器处理多个联系人,或者实施自己的联系人列表,让用户在应用中选择多个联系人,或者可以允许用户多次选择联系人直到完成。

,

我获得联系的简单解决方案,也许会对您有所帮助

用于保存提取值的数据类:

data class ContactModel(val phoneNumber: String,val displayName: String)

获取联系人并映射到模型

        val result = arrayListOf<ContactModel>()
        val cursor.context.contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,ContactsContract.Contacts.SORT_KEY_PRIMARY + " ASC")

        cursor?.let {
            val nameIndex = it.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)
            val phoneIndex = it.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)

            while (it.moveToNext()) {
                val name = cursor.getString(nameIndex)
                val phone = cursor.getString(phoneIndex)
                var num = phone
                        .replace(" ","")
                        .replace("-","")
                        .replace("(","")
                        .replace(")","")

                val contactModel = ContactModel(num,name)

                //Prevents duplicated contacts on some devices
                if (it.position != 0) {
                    if (contactModel != result[result.size - 1]) {
                        result.add(contactModel)
                    }
                } else {
                    result.add(contactModel)
                }

            }
        }
本文链接:https://www.f2er.com/2943288.html

大家都在问