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

    <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 {

@Override
protected 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值