美文网首页
Android选取联系人获取电话和姓名

Android选取联系人获取电话和姓名

作者: 牛皮李哥 | 来源:发表于2021-11-29 14:49 被阅读0次

跳转联系人页面,选取联系人之后,返回联系人姓名以及联系人电话,没有电话号吗的不会返回,一个联系人有多个电话号码时会分多个返回

//跳转联系人Intent
var intent = Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI)

获取到联系人uri之后,通过contentResolver查询联系人姓名以及电话

val contactUri = result.data?.data
contactUri?.let {
    contentResolver.query(contactUri, null, null, null, null).use { cursor ->
        if (cursor?.moveToFirst() == true) {
            var number = ""
            var name = ""
            val numberIndex =
                cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)

            if (numberIndex != -1) {
                number = cursor.getString(numberIndex)
                if (number.isNotEmpty()) {
                    binding.etPhone.setText(number.replace(" ", ""))
                }
            }

            val nameIndex =
                cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)
            if (nameIndex != -1) {
                name = cursor.getString(nameIndex)
            }
            Log.e("TAG", "$name:$number")
        }
    }
}

完整代码:

registerForActivityResult(
    ActivityResultContracts.StartActivityForResult(), activityResultRegistry
) { result ->
    val contactUri = result.data?.data
    contactUri?.let {
        contentResolver.query(contactUri, null, null, null, null).use { cursor ->
            if (cursor?.moveToFirst() == true) {
                var number = ""
                var name = ""
                val numberIndex =
                    cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)

                if (numberIndex != -1) {
                    number = cursor.getString(numberIndex)
                    if (number.isNotEmpty()) {
                        binding.etPhone.setText(number.replace(" ", ""))
                    }
                }

                val nameIndex =
                    cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)
                if (nameIndex != -1) {
                    name = cursor.getString(nameIndex)
                }
                Log.e("TAG", "$name:$number")
            }
        }
    }
}.launch(Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI))

相关文章

  • Android选取联系人获取电话和姓名

    跳转联系人页面,选取联系人之后,返回联系人姓名以及联系人电话,没有电话号吗的不会返回,一个联系人有多个电话号码时会...

  • 常见Android工具类之列表

    常见Android工具类之列表(未完待续。。。) 获取应用程序的版本名和版本号 获取手机联系人的信息(电话号码和名...

  • Android APP 获取手机联系人的电话

    Android联系人有多个电话的时候获取选中的电话: 在点击事件中加入下面代码: 在onActivityResul...

  • Android7.0拍照选取图片裁剪

    Android拍照和选取图片之前需要先获取对应的权限。需要了解的请看 Android6.0权限管理下面默认已经获取...

  • Android—运行时权限获取举例

    Android6.0以后的某些权限需要动态申请,下面以一个打电话/获取手机联系人的权限为例,了解其具体实现。 获取...

  • 数据库内功心法:数据库基本理论

    1、数据库范式 第一范式:列不可分,eg:【联系人】(姓名,性别,电话),一个联系人有家庭电话和公司电话,那么这种...

  • iOS获取通讯录电话号码与姓名

    本文主要写iOS如何访问通讯录,获取联系人的姓名、电话号码、头像等信息。 导入#import 框架。 定义数组@...

  • 获取联系人信息

    一. 简介 在Android 中获取联系人信息通过ContentProvider 来实现,联系人的Provider...

  • 数据库(mysql)

    1. 数据库范式 第一范式:列不可分,eg:【联系人】(姓名,性别,电话),一个联系人有家庭电话和公司电话,那么这...

  • Android快速获取联系人

    获取联系人在Android开发中经常会遇到,最近项目需要用到获取手机联系人的功能,于是写了一个先查询联系人id然后...

网友评论

      本文标题:Android选取联系人获取电话和姓名

      本文链接:https://www.haomeiwen.com/subject/ccqlxrtx.html