读取联系人案例

  [1]data表  data1列里面存的是所有联系人的信息  raw_contact_id 列是用来区分一共有几条联系人信息 mimetype_id 列是用来区分数据类型 
  [2]row_contacts表 中contact_id就是data表的 raw_contact_id 
  
   查询联系人的步骤 
   [1]先查询row_contacts表 的contact_id列 我们就知道一共有几条联系人 
   [2]我根据contact_id去查询data表  查询data1列和mimetype
   [3]view_data 是由data表和mimetype表的组合 
 
//查询联系人的工具类
public class QueryContactsUtils {

    
    public static List<Contact> queryContacts(Context context){
        //[0]创建一个集合
        
        List<Contact>  contactLists = new ArrayList<Contact>();
        //[1]先查询row_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) {
            //创建javabean对象
            Contact contact = new Contact();
            
            contact.setId(contact_id);
            
            System.out.println("contact_id:"+contact_id);
            //[2]根据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);
                //[3]根据mimetype 区分data1列的数据类型 
                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对象加入到集合中
            contactLists.add(contact);
            }
            
        }
        
        return contactLists;
        
    }
    
}
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        List<Contact> queryContacts = QueryContactsUtils.queryContacts(getApplicationContext());
        for (Contact contact : queryContacts) {
            System.out.println("contat:"+contact);
            
        }
        
        
        
    }

    

}
public class Contact {

    private String id;
    private String name;
    private String phone;
    private String email;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "Contact [id=" + id + ", name=" + name + ", phone=" + phone
                + ", email=" + email + "]";
    }
    
    
    
    
    
    
}
原文地址:https://www.cnblogs.com/xufengyuan/p/6028423.html