版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tiger_gy/article/details/84989958
Android 使用内容解析者读取系统联系人
核心代码在下面了,只需要自己创建javaBean就可以了
public static List<Contact> readContact(Context context){
//[0]创建 集合对象
List<Contact> contactLists = new ArrayList<Contact>();
//[1]由于联系人的数据库也是通过内容提供者暴露出来了 所以我想操作数据库直接使用内容解析者
//[2]先查询raw_contacts表 contact_id列
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri dataUri = Uri.parse("content://com.android.contacts/data");
Cursor cursor = context.getContentResolver().query(uri, new String[]{"contact_id"}, null, null, null);
while(cursor.moveToNext()){
String contact_id = cursor.getString(0);
if (contact_id!=null) {
System.out.println("contact_id:"+contact_id);
//创建javabean对象
Contact contact = new Contact();
contact.setId(contact_id);
//[3]根据 raw_contact_id 去查询 data表 data1列和 mimetype_id 列
//小细节 查询的不是data表 查询的是view_data的视图
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);
if ("vnd.android.cursor.item/name".equals(mimetype)) {
System.out.println("姓名:"+data1);
contact.setName(data1);
}else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
System.out.println("电话号码:"+data1);
contact.setPhone(data1);
}else if("vnd.android.cursor.item/email_v2".equals(mimetype)){
System.out.println("邮箱:"+data1);
contact.setEmail(data1);
}
}
//把java bean对象加入到集合中
contactLists.add(contact);
}
}
}