获取系统通讯录信息

/**
        * 1. 查询raw_contacts表里的content_id有多少个联系人
        * 2. 查询data表,每个联系人有多少条数据
        * 3. 根据mimetype数据类型判断数据
*/      
public void query(View v){
      //查询raw_contacts表里的content_id有多少个联系人
      ContentResolver resolver = getContentResolver();
      Uri rawUri = Uri.parse("content://com.android.contacts/raw_contacts/");
      Cursor rawCursor = resolver.query(rawUri, new String[]{"contact_id"}, null,null,null);
      //遍历每个联系人的数据
      while(rawCursor.moveToNext()){
         //获取联系人的id
         String id = rawCursor.getString(rawCursor.getColumnIndex("contact_id"));
         //查询data表
         Uri dataUri = Uri.parse("content://com.android.contacts/data/");
         Cursor dataCursor = resolver.query(dataUri, new String[]{"data1","mimetype"},
                "raw_contact_id=?", new String[]{id}, null);      
         //打印data表中所有的字段
      /* Cursor curosr = resolver.query(dataUri, null, null, null, null);
         String[] columnNames = curosr.getColumnNames();
         for(String col:columnNames){
            System.out.println(col);
         }*/      
         //每个联系人有多少条数据
         while(dataCursor.moveToNext()){
            String data1 = dataCursor.getString(0);
//          System.out.println(data1);
            //根据mimetype数据类型判断数据
            String type = dataCursor.getString(1);
//          System.out.println(type);
            if ("vnd.android.cursor.item/email_v2".equals(type)) {
                System.out.println("邮箱:"+data1);
            }else if("vnd.android.cursor.item/name".equals(type)){
                System.out.println("姓名:"+data1);
            }else if("vnd.android.cursor.item/phone_v2".equals(type)){
                System.out.println("手机号码:"+data1);
            }
         }
         dataCursor.close();
      }
      rawCursor.close();
   }

 

posted on 2017-02-20 19:52  LoaderMan  阅读(282)  评论(0编辑  收藏  举报

导航