您当前的位置: 首页 > 

蓝不蓝编程

暂无认证

  • 5浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

安卓读取系统通讯录

蓝不蓝编程 发布时间:2020-05-06 10:36:17 ,浏览量:5

目标

读取安卓系统通讯录

实现方案
  1. 添加依赖
implementation 'com.qw:soulpermission:1.3.0'
  1. 主要代码
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //对按钮添加点击事件
        button.setOnClickListener {
            readContactsWithPermission()
        }
    }

    /**
     * 先申请读取系统通讯录权限,再进行读取。
     */
    private fun readContactsWithPermission() {
        SoulPermission.getInstance()
            .checkAndRequestPermission(
                Manifest.permission.READ_CONTACTS,
                object : CheckRequestPermissionListener {
                    override fun onPermissionOk(permission: Permission) {
                        readContacts()
                    }

                    override fun onPermissionDenied(permission: Permission) {
                        toast("请授予权限")
                    }
                })
    }

    /**
     * 读取系统通讯录并展示总数和其中一个联系人的姓名与电话。
     */
    private fun readContacts() {
        val contacts: ArrayList = getContactsInfo()
        if (contacts.isNotEmpty()) {
            toast("一共${contacts.size}个联系人,其中一个:${contacts.first()}")
        }
    }

    /**
     * 读取系统通讯录信息
     */
    private fun getContactsInfo(): ArrayList {
        val dataList = ArrayList()
        contentResolver.query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null
        )?.apply {
            while (moveToNext()) {
                val displayName =
                    getString(getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))
                val phone =
                    getString(getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
                dataList.add("$displayName:$phone")
            }
            close()
        }
        return dataList
    }

    private fun toast(text: String) =
        Toast.makeText(this, text, Toast.LENGTH_LONG).show()
}
源代码

https://gitee.com/cxyzy1/ContentProviderDemo

关注
打赏
1639405877
查看更多评论
立即登录/注册

微信扫码登录

0.1247s