android入门,利用内容解析者 简单实现读取联系人

 
 
import java.util.ArrayList ;
import java.util.List ;

import android.content.Context ;
import android.database.Cursor ;
import android.net.Uri ;

public class QueryContactsUtils {
public static List < Contact > querycontacts ( Context context ) {
// [0]创建一个集合
List < Contact > contactList = new ArrayList < Contact >();

// [1]先查询row_contacts表 的contact_id列 我们就知道一共有几条联系人
Uri datauri = Uri . parse ( "content://com.android.contacts/data" );
Uri uri = Uri . parse ( "content://com.android.contacts/raw_contacts" );
Cursor cursor = context . getContentResolver (). query ( uri ,
new String [] { "contact_id" }, null , null , null );
while ( cursor . moveToNext ()) {
String contact_id = cursor . getString ( 0 );
// 创建javabaen对象
Contact contact = new Contact ();
if ( contact_id != null ) {

contact . setId ( contact_id );
/*
* [2]根据contact_id去查询data表 查询data1列和mimetype !!view_data
* 是由data表和mimetype表的组合
*/

Cursor datacursor = context . getContentResolver (). query ( datauri ,
new String [] { "data1" , "mimetype" },
"raw_contact_id =?" , new String [] { contact_id }, null );
while ( datacursor . moveToNext ()) {
String data1 = datacursor . getString ( 0 );
String mimetype = datacursor . getString ( 1 );
// [3]根据mimetype区分数据类型
if ( "vnd.android.cursor.item/name" . equals ( mimetype )) {
contact . setName ( data1 );

} else if ( "vnd.android.cursor.item/phone_v2"
. equals ( mimetype )) {
contact . setPhone ( data1 );

} else if ( "vnd.android.cursor.item/email_v2"
. equals ( mimetype )) {
contact . setEmail ( data1 );
}

} // 把javabean对象添加到数组里
contactList . add ( contact );
}
}
return contactList ;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值