安卓之获取通讯录类

/**
 * 获取所有联系人信息
 * @param context上下文
 * @return
 */
public static List<ContactInfo> getContactInfos(Context context){
//添加android.permission.READ_CONTACTS
//由于数据库是私有的别的应用不能直接访问,需要通过系统自带的内容提供者解析器获取
ContentResolver resolver=context.getContentResolver();//获取应用程序内容的解析器
List<ContactInfo> infos=new ArrayList<ContactInfo>();

Uri rawcontactUri=Uri.parse("content://com.android.contacts/raw_contacts");//内容提供者的数据库的路径
Uri dataUri=Uri.parse("content://com.android.contacts/data");//查看源码ContactsProvider2.calss的UriMatcher
Cursor contaccursor=resolver.query(rawcontactUri, new String[]{"contact_id"}, null, null, null);//参数、条件、排序
//查询某一个uri的数据库 ,在系统上层源码的、providers\ContactsProvider\AndroidManifest.xml查看,可以参考contactsContract类
while (contaccursor.moveToNext()) {
String id=contaccursor.getString(0);//联系人id :contact_id
ContactInfo info=new ContactInfo();

Cursor dataCursor=resolver.query(dataUri, new String[]{"data1","mimetype"}, "raw_contact_id=?", new String[]{id}, null);
while (dataCursor.moveToNext()) {
String data1=dataCursor.getString(0);
String mimetype=dataCursor.getString(1);

if("vnd.android.cursor.item/name".equals(mimetype)){
info.setName(data1);//姓名
}else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
info.setPhone(data1);
}
}
dataCursor.close();
infos.add(info);//添加存入对象
}
contaccursor.close();
return infos;

}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值