查询手机内联系人

Posted 钱大少丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询手机内联系人相关的知识,希望对你有一定的参考价值。

 

联系人的创建查询

public class Query {
    //查询联系人的方法
        public static List<Contact> queryContact(Context context){
            //创建一个集合对象
            List<Contact> contacts=new ArrayList<Contact>();
            //先查询raw_contact表  这个表有几条联系人数据
            //由于联系人数据通过内容提供者暴露出来,所以我们可以通过内容解析操作数据库
            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){
                    Contact contact=new Contact();
                    contact.setId(contact_id);
                    Cursor cursor1=context.getContentResolver().query(dataUri,new String[]{"data1","mimetype"},"raw_contact_id=?",new String[]{contact_id},null);
                    while (cursor1.moveToNext()){
                        String data1=cursor1.getString(0);
                        String mimetype=cursor1.getString(1);
                        //区分类型
                        if ("vnd.android.cursor.item/name".equals(mimetype)){
                            contact.setName(data1);
                        }
                        else if ("vnd.android.cursor.item/phone_v2".equals(mimetype)){
                            contact.setPhone(data1);
                        }
                    }
                    //把contact放入集合
                    contacts.add(contact);
                }



            }
            return  contacts;


        }
}

 

创建一个Contact封装类

public class Contact {
    private String id;
    private String name;
    private String phone;

    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;
    }
}

 

以上是关于查询手机内联系人的主要内容,如果未能解决你的问题,请参考以下文章

无法在片段内查看接收短信

SOQL查询不会检索所有联系人

Android快速获取联系人

从手机读取联系人非常慢

从片段内请求权限后应用程序崩溃

如何使用片段将联系人选择到edittext