读取联系人

package com.example.day07_;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {
// 系统联系人Id表(raw_contacts)的URI
String user_id = “content://com.android.contacts/raw_contacts”;
//系统联系人data表的uri
String data = “content://com.android.contacts/data”;

List<User> list=new ArrayList<User>();  

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}

public void read(View v){

//得到内容解析者
ContentResolver contentResolver = getContentResolver();

//1:得到Id表(raw_contacts)里的联系人id
Cursor cursor = contentResolver.query(Uri.parse(user_id), new String[]{“_id”}, null, null, null);

while (cursor.moveToNext()) {

    User user=new User();
    //2:得到每一条ID
    String id = cursor.getString(cursor.getColumnIndex("_id"));
    //3:通过ID得到Data表的mimetype_id列,data1列的数据
    //应该根据mimetype_id去mimetypes表里,查mimetype_id对应的数据类型,
    //但是源码已经封装好了,只传"mimetype"字段,就可以查到改mimetype_id对应的数据类型
    Cursor cursor_data = contentResolver.query(Uri.parse(data), new String[]{"mimetype","data1"},"raw_contact_id = ?" , new String[]{id}, null);

    //4:得到同一Id的数剧
        while (cursor_data.moveToNext()) {

            // 先得到类型,再判断该条数据是什么类型的
            // 得到mimetype列额数据
            String mimetype = cursor_data.getString(cursor_data
                    .getColumnIndex("mimetype"));
            // 得到data1列的数据
            String data1 = cursor_data.getString(cursor_data
                    .getColumnIndex("data1"));
            System.out.println(data1 + "=======" + mimetype);
            // 通过比对查询出来的mimetype,去判断data1的数据类型
            // 邮箱
            if ("vnd.android.cursor.item/email_v2".equals(mimetype)) {
                user.email = data1;
                // 手机号
            } else if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {

                user.tel = data1;
                // 地址
            } else if ("vnd.android.cursor.item/postal-address_v2"
                    .equals(mimetype)) {

                user.address = data1;
                // 姓名
            } else if ("vnd.android.cursor.item/name".equals(mimetype)) {

                user.name = data1;
            }

        }

        list.add(user);
}

for (User user : list) {
    System.out.println(user.toString()+"-----------");
}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值