通过 ContentResolver 读取联系人信息

1、首先动态获取 读取联系人信息权限

   <1>配置文件中声明对应权限

<uses-permission android:name="android.permission.READ_CONTACTS"/>

   <2>判断是否具有对应权限

     if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) !=             PackageManager.PERMISSION_GRANTED) {         ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_CONTACTS), 1)     } else {         readContacts()  //读取联系人信息     }

  <3>授权

   override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {        when (requestCode) {            1 ->                if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    readContacts()                } else {                    Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show()                }        }    }


2、创建ListView适配器,联系人信息集合

  var adapter: ArrayAdapter<String>? = null  var contactsList = mutableListOf<String>()

   //实例化 适配器   adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, contactsList)   //为listView 设置适配器   lv_contents_view.adapter = adapter

3、读取联系人信息

    /**     * 加载联系人信息     */    private fun readContacts() {        var cursor: Cursor

//查询联系人数据        cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,                null, null, null, null)        if (cursor != null) {            while (cursor.moveToNext()) {                //获取联系人姓名                var displayName = cursor.getString(cursor.getColumnIndex(                        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))                //获取联系人电话                var number = cursor.getString(cursor.getColumnIndex(                        ContactsContract.CommonDataKinds.Phone.NUMBER))                // 添加联系人信息到集合当中                contactsList.add(displayName + "\n" + number)            }            //刷新 ListView            adapter?.notifyDataSetChanged()        }        cursor.close()  //关闭 Cursor 对象    }


4、成功显示数据

注意:编程所用语言为 Kotlin

null

时间: 2024-10-03 14:06:56

通过 ContentResolver 读取联系人信息的相关文章

iOS.访问通讯录.01.读取联系人信息

1.相关函数介绍 1.创建通讯录对象函数 ABAddressBookRef ABAddressBookCreateWithOptions( CFDictionaryRef options, CFErrorRef *error ); 例子: CFErrorRef error = NULL; ABAdressBookRef addressBook = ABAdressBookCreateWithOptions(NULL,&error); ABAddressBookRequestAccessWithC

android之读取联系人信息

联系人信息被存放在一个contacts2.db的数据库中 主要的两张表 布局文件 在布局文件中定义一个button按钮来获取触发获取联系人信息的事件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="ver

安卓基础之读取联系人的姓名和电话

一.摘要:利用内容解释器调用联系人应用的内容提供者暴露的方法,读取联系人信息.(本节只总结实现步骤,解释请看http://www.xuanyusong.com/archives/169) 二.主要逻辑: 1.获取内容解释者mResolver ContentResolver mResolver=getApplicationContext().getContentResolver(); 2.调用解释者的query方法获取cursor Cursor cursor=mResolver.query(Con

Android学习笔记(四七):Content Provider初谈和Android联系人信息

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri

【android基础】读取系统联系人信息和添加一条联系人信息到通讯录

一,读取系统联系人信息 I,准备工作 同样,要读取系统联系人的数据库文件,首先要确定主机名和匹配规则. 我们将联系人的数据库文件导出来查看时,有下面几点需要知道: 1)联系人的数据,比如name,number,email都存储在data表的data1列. 2)区分不同联系人的列为raw_contact_id,它对应于raw_contacts表中的contact_id列 3)区分联系人数据类型的列位于mimetype列,其中1表示emial,5表示电话,7表示姓名. II,思路 读取联系人的信息,

[android] 获取系统的联系人信息

内容提供是实质上是个接口,后门,他给别人提供数据,系统联系人是个比较复杂的内容通过者. 找到/data/data/com.android.providers.contacts/contacts2.db 这个目录下还有个文件contacts2.db.-journal,这个文件和数据库的事务相关 联系人应用数据库的主要结构 raw_contacts 联系人表 contact_id 联系人id data数据表  raw_contact_id联系人id,mimetype_id数据类id,data1数据

读取联系人

首先编辑一下布局文件. 联系人信息肯定是一条一条的,所以在布局中使用ListView即可 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layou

内容提供者(获取联系人信息和插入联系人)

一丶获取联系人的信息 点击获取联系人信息 public void click(View view){        //获取内容解析器        ContentResolver resolver = getContentResolver() ;        //设定访问的uri(系统本机)        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts") ;//联系人的id        Uri d

22读取联系人

在模拟器中添加几个联系人,在data/data/下导出数据库,如下: 打开. 关心的表有:raw_contact,data,mimetypes,计三张表. 首先得到内容解析器,得到内容解析器之后,既可以使用查询的方法了,查询需要传入URI,查看源代码看下raw_contacts的路径. resolver.query(uri, new String[]{"contact_id"}, selection, selectionArgs, sortOrder); query的第二个参数对应于r