设为首页 加入收藏

TOP

Android手机联系人数据库分析(一)
2014-11-24 01:45:44 来源: 作者: 【 】 浏览:4
Tags:Android 手机 联系人 数据库分析

Android手机联系人数据库分析 下载


具体下载目录在 /2013年资料/12月/24日/Android手机联系人数据库分析


运行结果图如下:


Android手机联系人数据库分析


上面是每个item对应的布局,右下角被挡住的两个分别为家庭号码,工作号码


Android手机联系人数据库分析


哎,不同人信息不一样,长度也不一样啊,看起来不是很美观,


在群组中,因为所有人都在“所有联系人”组中,又在其他组中,故:查询组有多个。


还是先把核心代码贴出来


private void getData(){
HashMap list = new HashMap(100);
/*Cursor c = getContentResolver().query(Contacts.CONTENT_URI, new String[]{Contacts._ID}, null, null, null);
if(c.moveToFirst()){
int id = c.getColumnIndex(Contacts._ID);
}*/
// 姓名和手机号
Cursor c = getContentResolver().query(Phone.CONTENT_URI,
new String[]{Phone.DISPLAY_NAME, Phone.NUMBER, Phone.CONTACT_ID},
Phone.TYPE + "= ",
new String[]{Phone.TYPE_MOBILE+""}, null);
if(c.moveToFirst()){
int id = c.getColumnIndex(Phone.CONTACT_ID);
int name = c.getColumnIndex(Phone.DISPLAY_NAME);
int num = c.getColumnIndex(Phone.NUMBER);
do{
String cid = c.getString(id);
String cname = c.getString(name);
String cnum = c.getString(num);
Item remark = list.get(cid);
if(remark == null){
remark = new Item();
list.put(cid, remark);
}
remark.name = cname;
remark.number = cnum;
Log.i(TAG, "name:" + cname + " num:" + cnum);
}while(c.moveToNext());
}
c.close();
// 邮箱信息
c = getContentResolver().query(Email.CONTENT_URI,
new String[]{Email.DATA, Email.CONTACT_ID},
null, null, Email.CONTACT_ID + " asc");
if(c.moveToFirst()){
int id = c.getColumnIndex(Email.CONTACT_ID);
int em = c.getColumnIndex(Email.DATA);
do{
String cid = c.getString(id);
String email = c.getString(em);
Item remark = list.get(cid);
if(remark == null){
remark = new Item();
list.put(cid, remark);
}
remark.email = email;
Log.i(TAG, "email:" + email);
}while(c.moveToNext());
}
c.close();
Log.i(TAG, "start 工作号码");
// 工作号码
String[] projection = new String[] { Phone.NUMBER, Phone.CONTACT_ID};
c = getContentResolver().query(
Phone.CONTENT_URI, projection,
Phone.TYPE + "= ",
new String[]{Phone.TYPE_WORK + ""},
Phone.CONTACT_ID + " asc");
if(c.moveToFirst()){
int num = c.getColumnIndex(Phone.NUMBER);
int id = c.getColumnIndex(Phone.CONTACT_ID);
do{
String cid = c.getString(id);
String phone = c.getString(num);
Item remark = list.get(cid);
if(remark == null){
remark = new Item();
list.put(cid, remark);
}
remark.workTel = phone;
Log.i(TAG, "workTel:" + phone);
}while(c.moveToNext());
}
c.close();
// 公司名字
c = getContentResolver().query(
Data.CONTENT_URI, new String[]{Data.DATA1, Data.CONTACT_ID},
Data.MIMETYPE + "= ",
new String[]{Organization.CONTENT_ITEM_TYPE},
Data.CONTACT_ID + " asc");
if(c.moveToFirst()){
int data1 = c.getColumnIndex(Data.DATA1);
int id = c.getColumnIndex(Data.CONTACT_ID);
do{
String cid = c.getString(id);
String companyname = c.getString(data1);
Item remark = list.get(cid);
if(remark == null){
remark = new Item();
list.put(cid, remark);

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇80行Lua代码实现一个满足基本要求.. 下一篇Python非常cool的svg格式chart生..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: