通讯录的内容提供者(查询手机通讯录的数据)

来源:互联网 发布:数据分析 培训 编辑:程序博客网 时间:2024/05/16 01:56
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

ContactInfo类(Bean)

package com.saiermeng.readcontacts.domain;public class ContactInfo {    private String name;    private String phone;    private String email;    private String qq;    @Override    public String toString() {        return "ContactInfo [name=" + name + ", phone=" + phone + ", email="                + email + ", qq=" + qq + "]";    }    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;    }    public String getQq() {        return qq;    }    public void setQq(String qq) {        this.qq = qq;    }}

工具类(ContactInfoUtils.java)

package com.saiermeng.readcontacts.utils;import java.util.ArrayList;import java.util.List;import android.content.ContentResolver;import android.content.Context;import android.database.Cursor;import android.net.Uri;import com.saiermeng.readcontacts.domain.ContactInfo;public class ContactInfoUtils {    /**     * 获取系统里面的全部的联系人信息     *      * @param context     *            上下文     * @return     */    public static List<ContactInfo> getAllContactInfos(Context context) {        // 1. 查询raw_contacts表, 把每个联系人的contact_id.        ContentResolver resolver = context.getContentResolver();        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");        Cursor cursor = resolver.query(uri, new String[] { "contact_id" },                null, null, null);        // 创建一个集合,存放所有的联系人信息        List<ContactInfo> contactInfos = new ArrayList<ContactInfo>();        while (cursor.moveToNext()) {            String id = cursor.getString(0);            System.out.println("联系人id:" + id);            if (id != null) {                ContactInfo contactInfo = new ContactInfo();                // 2. 根据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);                while (dataCursor.moveToNext()) {                    String data1 = dataCursor.getString(0);                    String mimetype = dataCursor.getString(1);                    if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {                        contactInfo.setPhone(data1);                    } else if ("vnd.android.cursor.item/email_v2"                            .equals(mimetype)) {                        contactInfo.setEmail(data1);                    } else if ("vnd.android.cursor.item/name".equals(mimetype)) {                        contactInfo.setName(data1);                    } else if ("vnd.android.cursor.item/im".equals(mimetype)) {                        contactInfo.setQq(data1);                    }                }                contactInfos.add(contactInfo);                dataCursor.close();            }        }        cursor.close();        return contactInfos;    }}

主窗体的点击事件(MainActivity.java)

package com.saiermeng.readcontacts;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.View;import com.saiermeng.readcontacts.domain.ContactInfo;import com.saiermeng.readcontacts.utils.ContactInfoUtils;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}/** * 把联系人信息给读取出来 * @param view */public void readContactInfos(View view){List<ContactInfo> infos = ContactInfoUtils.getAllContactInfos(this);for(ContactInfo info:infos){System.out.println(info.toString());}}}
0 0
原创粉丝点击