得到联系人数据

/**

* 查询所有联系人信息

*   这里查询的是data表

*

*/

@SuppressLint("NewApi")

private void findContack() {

ContentResolver cr = this.getContentResolver();

Cursor cur = cr.query(Data.CONTENT_URI, null, null, null, "raw_contact_id");

int oldId = -1;

while(cur.moveToNext()){

int newId = cur.getInt(cur.getColumnIndex(Data.RAW_CONTACT_ID));

//新的联系人   外键发生改变了

if(oldId != newId ){

oldId = newId;

}

//取得当前记录的类型

String mimeType =  cur.getString(cur.getColumnIndex(Data.MIMETYPE));

//取得名称相关

if(StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)){

String familyName = cur.getString(cur.getColumnIndex(StructuredName.FAMILY_NAME));   //姓

String givenName =  cur.getString(cur.getColumnIndex(StructuredName.GIVEN_NAME));    //名

mContactsName.add(givenName);

//               //绘制联系人名称

//                 title.setText(mContactsName.get(position));

//                 //绘制联系人号码

//                 text.setText(mContactsNumber.get(position));

//                 //绘制联系人头像

//                 iamge.setImageBitmap(mContactsPhonto.get(position));

Bitmap contactPhoto = null;

Long contactid =  cur.getLong(cur.getColumnIndex(StructuredName.CONTACT_ID));

Long photoid =  cur.getLong(cur.getColumnIndex(StructuredName.PHOTO_ID));

if(photoid > 0 ) {

Uri uri =ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid);

InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);

contactPhoto = BitmapFactory.decodeStream(input);

}else {

contactPhoto = BitmapFactory.decodeResource(getResources(), R.drawable.contact_photo);

}

mContactsPhonto.add(contactPhoto);

}

//取得电话相关

else if(Phone.CONTENT_ITEM_TYPE.equals(mimeType)){

int phoneType = cur.getInt(cur.getColumnIndex(Phone.TYPE));

//宅电信息     家庭电话

if(phoneType == Phone.TYPE_HOME){

//                     p.homeTel = cur.getString(cur.getColumnIndex(Phone.NUMBER));

}

//手机信息

else if(phoneType == Phone.TYPE_MOBILE){

String mobileTel = cur.getString(cur.getColumnIndex(Phone.NUMBER));

mContactsNumber.add(mobileTel);

}

}

//取得及时(im)信息   msn  qq

else if(Im.CONTENT_ITEM_TYPE.equals(mimeType)){

int imType = cur.getInt(cur.getColumnIndex(Im.PROTOCOL));

//msn

if(imType == Im.PROTOCOL_MSN){

//                     p.msn = cur.getString(cur.getColumnIndex(Im.DATA));

}

//QQ

else if(imType == Im.PROTOCOL_QQ){

String qq = cur.getString(cur.getColumnIndex(Im.DATA));

Log.i("DD","===qq===="+qq);

}

}

}

}

时间: 2024-11-03 10:29:20

得到联系人数据的相关文章

Lync2013升级之从Lync2010导入个人联系人数据

我们在做完Lync2013升级完毕后,所有个人的联系人都已经丢失.我们应当怎么从原有数据库里面导入联系人数据呢? Lync2010 的各种用户数据包括用户权限,用户联系人列表等都存储在RTC.mdf数据库里,微软为我们提供了现成的管理此数据库的工具叫做Dbimpexp.exe. 此工具在Lync的安装目录:C:\Program Files\Common Files\Microsoft Lync Server 2010\Support> 但是此工具只能管理Lync2010的数据,导出导入数据都必须

Android-读取/新增/操作系统联系人数据

想要访问Android操作系统的ContentProvider就需要明白以下原理: 在Android操作系统里面的 /packsges/目录: apps: 很多的系统应用,例如:联系人,浏览器,音乐播放器,设置,相机 ...... ............ providers:系统对外暴露的ContentProvider: 这样就明白了,Android操作系统里面的应用(apps),是访问系统对外暴露的ContentProvider(providers) 先在模拟器,添加联系人: 既然说Andr

Android ContenObserver 监听联系人数据变化

一.知识介绍 1.ContentProvider是内容提供者 ContentResolver是内容解决者(对内容提供的数据进行操作) ContentObserver是内容观察者(观察内容提供者提供的数据变化) 2.ContentObserver需要ContentResolver进行注册. resolver.registerContentObserver(uri,true,observer): ①URI(第一个参数):该监听所监听ContentProvider的Uri ②notifyForDesc

incallui中如何查询联系人数据

联系人信息显示在CallCard中,提示当前正在通话的联系人号码.姓名.头像.号码类型等信息: 代码中在两个地方发起对当前联系人的查询, Init():startContactInfoSearch(call, true, call.getState() == Call.State.INCOMING); // 界面第一次启动 onStateChange():maybeStartSearch(mPrimary, true); // call状态改变,primary call has changed

【contentprovider系列5】综述使用contentprovider增删改查联系人数据

增加:一般操作的是data表. 查找:一般涉及的是多表的查询. 修改:也是修改的data表中的数据. 删除:涉及多表的查询,最后还是删除的data表中的数据. 综上,所有实际的数据都是存放在data表中的.raw_contacts表和data表是一对多的关系,而contacts表一行是多行row_contacts表的综合,因为可能设计多个账户.具体的示意图见如下:

赵雅智_android系统联系人app分析并获取数据

手机联系人存放位置 和短信一样在data-data下 手机联系人数据库解析 将contacts2.db表导出,通过SQLiteexpert查看 mimetypes表:存放的数据类型(电话,头像,姓名,邮箱) 外键: raw_contacts表:存放联系人的id contact_id:联系人id display_name:联系人姓名 data表:存放联系人的数据 data1:联系人数据 data2:在mimetypes表中data1表示值得意义 mimetype_id:联系人ID,data数据所属

Android(java)学习笔记251:ContentProvider使用之添加数据到联系人

1.添加联系人逻辑思路 (1)首先在raw_contacts创建一个新的id (2)在data表里面添加这个id对应的数据 2.下面通过一个案例,说明一下如何添加一条数据到联系人: (1)首先我们关注一下布局文件,activity_main.xml,如下: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.a

微项目: 联系人管理——知识与技术总结

1, index页面(带直接显示数据) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.hanqi.*" %> <%@ page import="com.hanqi.dao.*" %> <%@ pag

Lync Server 2010批量添加联系人并同步联系人

最近一直帮助朋友整理Lync Server 2010,总是听他抱怨说微软的Lync不能实现组织结构等方面的联系人列表,其实也不完全没办法实现,早在OCS的年代,OCS利用Restkit tool工具进行添加联系人列表,而到了Lync的时代虽然Restkit Tool工具还在,但是已然无法利用之前的方式进行批量添加联系人了,在网上有人表示利用LyncAddContacts.vbs这个工具进行批量添加,但是所有的文章只是把国外这个作者的写的东西照抄过来并且翻译一下就成为原创发布到网络上,本人觉得现在