本文主要是介绍Android 之获取本地联系人,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
android 之系统本地获悉系统联系人首先:我们需要知道,我们获取联系人需要知道一些什么知识点。
知识点盲区扫描:
1.android系统联系人表结构
2.内容提供者也就是content provide
3.利用内容提供者和查询数据表内容得到数据
(一)系统联系人表结构
1.raw_contacts 表:保存联系人的id contact_id 存入联系人id
2.data表,保存联系人数据, data1 存放数据 mimetype 存放数据类型 raw_contact_id 保存数据属于哪个联系人
3.mimetypes 表:保存数据类型 1.email 5.phone 7.name等等。
需求:查询所有的联系人信息
实现步骤
1.查询raw_contacts表,把所有的联系人id取出来
2.根据id查询data表,把这个id对应的数据取出来
3.根据数据的类型,查询mimetypes表,获取数据的业务类型
(二)具体实现
1.记住添加权限: <uses-permission android:name="android.permission.READ_CONTACTS" />
2.布局文件中随便写一个Button控件,然后设置监听事件
3.监听事件中写入以下方法即可:
private void getContacts() {
// 1.获取内容提供者中的 ContentResolver
ContentResolver resolver = getContentResolver();
// 2.拿到raw_contact表的uri
Uri contacts_uri = Uri.parse("content://com.android.contacts/raw_contacts");
// 2.拿到data表的uri
Uri data_uri = Uri.parse("content://com.android.contacts/data");
// 3.根据uri获取数据库内容的下标
Cursor cursor = resolver.query(contacts_uri, null, null, null, null);
while (cursor.moveToNext()) {
// 获取raw_contact表的id
String id = cursor.getString(cursor.getColumnIndex("contact_id"));
Log.v("id", "contacts_id = " + id);
// 获取data表的下标 注意:data表是根据raw_contact表的id获取
Cursor dataCursor = resolver.query(data_uri, null, "raw_contact_id=?",
new String[] { id }, null);
while (dataCursor.moveToNext()) {
String data1 = dataCur.getString(dataCur
.getColumnIndex("data1"));
String mimetype = dataCur.getString(dataCur
.getColumnIndex("mimetype"));
Log.v("data1", "data1 = " + data1);
Log.v("mimetype", "mimetype = " + mimetype);
}
dataCur.close();
}
}
然后去log中看消息,即可看到联系的人一些数据,看起来是不是很简单,去实践一下吧,
这篇关于Android 之获取本地联系人的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!