Android 使用内容解析者读取系统联系人

版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
                     }
              }
}

猜你喜欢

转载自blog.csdn.net/tiger_gy/article/details/84989958