手机联系人存放位置
和短信一样在data-data下
手机联系人数据库解析
将contacts2.db表导出,通过SQLiteexpert查看
mimetypes表:存放的数据类型(电话,头像,姓名,邮箱)
外键:
raw_contacts表:存放联系人的id
contact_id:联系人id
display_name:联系人姓名
data表:存放联系人的数据
data1:联系人数据
data2:在mimetypes表中data1表示值得意义
mimetype_id:联系人ID,data数据所属的联系人
外键:
raw_contact_id:和raw_contacts表关联
mimetype_id:和mimetypes表关联
contact表
外键
获取联系人的信息:
- 查询raw_contact表,把联系人的id获取出来
- 根据联系人的id查询data表,把这个联系人的相应数据获取出来
- 查询mimetypes表,获取数据类型
插入一个联系人信息
- 首先插入raw_contact表写入一个新的联系人id
- 根据新创建的id 写入到data表 data1 mimetype
手机联系人源码解析
在android系统的联系人代码中,AndroidMenifest.xml定义了提供外接查询的接口
在android系统联系人中,定义了联系人有关的urimatcher
在android api中的ContactsContractData为我们提供了响应方法及简单用例:
添加方法
查询方法
删除更新方法
步骤
得到内容解析器
查询数据
显示数据
主要代码
package com.example.android_readphone.provider; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; import android.test.AndroidTestCase; /** * 测试获取联系人 * * @author zhaoyazhi * */ public class PhoneProviderTest extends AndroidTestCase { public void readContacts() { ContentResolver contentResolver = getContext().getContentResolver(); Cursor c = contentResolver.query( ContactsContract.RawContacts.CONTENT_URI, new String[] { "_id", "display_name" }, null, null, null); while (c.moveToNext()) { String id = c.getString(c .getColumnIndex(ContactsContract.RawContacts._ID)); String name = c.getString(c.getColumnIndex("display_name")); System.out.println("序号id:" + id + "----------name:" + name ); } c.close(); } }
输出结果:
android联系人系统源码:http://download.csdn.net/detail/zhaoyazhi2129/7491109
赵雅智_android系统联系人app分析并获取数据,布布扣,bubuko.com
时间: 2024-12-17 05:13:45