赵雅智_android系统联系人app分析并获取数据
时间:2014-06-15 16:00:36
收藏:0
阅读:411
手机联系人存放位置
和短信一样在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
评论(0)