android中读取联系人的所有信息

public static ArrayList<DetailItem> getContactDetailsById(Context context, long id) {
        Cursor cursor = null;
        ArrayList<DetailItem> details = new ArrayList<DetailItem>();

        try {
            Uri uri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(id) + "/data");
            cursor = context.getContentResolver().query(uri, null, null, null, null);
            if (cursor != null) {
                final int columnIndexId = cursor.getColumnIndex(Data._ID);
                final int columnIndexMimeType = cursor.getColumnIndex(Data.MIMETYPE);
                final int columnIndexData1 = cursor.getColumnIndex(Data.DATA1);
                final int columnIndexData2 = cursor.getColumnIndex(Data.DATA2);
                final int columnIndexData9 = cursor.getColumnIndex(Data.DATA9);
                final int columnIndexData4 = cursor.getColumnIndex(Data.DATA4);
                final int columnIndexData5 = cursor.getColumnIndex(Data.DATA5);
                final int columnIndexData3 = cursor.getColumnIndex(Data.DATA3);
                final int columnIndexData14 = cursor.getColumnIndex(Data.DATA14);

                cursor.moveToPosition(-1);
                while (cursor.moveToNext()) {
                    long dataId = cursor.getLong(columnIndexId);
                    String mimeType = cursor.getString(columnIndexMimeType);

                    if (TextUtils.equals(mimeType, Phone.CONTENT_ITEM_TYPE)) {
                        String number = cursor.getString(columnIndexData1);
                        int type = cursor.getInt(columnIndexData2);

                        DetailItem item = new DetailItem(DetailItem.TYPE_PHONENUMBER, dataId);
                        item.setStrData1(number);
                        item.setIntData1(type);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, Email.CONTENT_ITEM_TYPE)) {
                        String address = cursor.getString(columnIndexData1);
                        int type = cursor.getInt(columnIndexData2);

                        DetailItem item = new DetailItem(DetailItem.TYPE_EMAIL, dataId);
                        item.setStrData1(address);
                        item.setIntData1(type);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, StructuredName.CONTENT_ITEM_TYPE)) {
                        String name = cursor.getString(columnIndexData1);
                        String pinYinName = cursor.getString(columnIndexData9);

                        DetailItem item = new DetailItem(DetailItem.TYPE_NAME, dataId);
                        item.setStrData1(name);
                        item.setStrData2(pinYinName);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, Im.CONTENT_ITEM_TYPE)) {
                        String imNumber = cursor.getString(columnIndexData1);
                        int protocol = cursor.getInt(columnIndexData5);

                        DetailItem item = new DetailItem(DetailItem.TYPE_IM, dataId);
                        item.setStrData1(imNumber);
                        item.setIntData1(protocol);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, Nickname.CONTENT_ITEM_TYPE)) {
                        String nickName = cursor.getString(columnIndexData1);
                        int type = cursor.getInt(columnIndexData2);

                        DetailItem item = new DetailItem(DetailItem.TYPE_NICKNAME, dataId);
                        item.setStrData1(nickName);
                        item.setIntData1(type);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, Website.CONTENT_ITEM_TYPE)) {
                        String website = cursor.getString(columnIndexData1);
                        int type = cursor.getInt(columnIndexData2);

                        DetailItem item = new DetailItem(DetailItem.TYPE_WEBSITE, dataId);
                        item.setStrData1(website);
                        item.setIntData1(type);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, StructuredPostal.CONTENT_ITEM_TYPE)) {
                        String address = cursor.getString(columnIndexData1);
                        int type = cursor.getInt(columnIndexData2);

                        DetailItem item = new DetailItem(DetailItem.TYPE_ADDRESS, dataId);
                        item.setStrData1(address);
                        item.setIntData1(type);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, Note.CONTENT_ITEM_TYPE)) {
                        String note = cursor.getString(columnIndexData1);

                        DetailItem item = new DetailItem(DetailItem.TYPE_NOTE, dataId);
                        item.setStrData1(note);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, Organization.CONTENT_ITEM_TYPE)) {
                        String organization = cursor.getString(columnIndexData1);
                        String jobName = cursor.getString(columnIndexData4);

                        DetailItem item = new DetailItem(DetailItem.TYPE_ORGANIZATION, dataId);
                        item.setStrData1(organization);
                        item.setStrData2(jobName);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, Event.CONTENT_ITEM_TYPE)) {
                        String event = cursor.getString(columnIndexData1);
                        int type = cursor.getInt(columnIndexData2);

                        DetailItem item = new DetailItem(DetailItem.TYPE_EVENT, dataId);
                        item.setStrData1(event);
                        item.setIntData1(type);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, GroupMembership.CONTENT_ITEM_TYPE)) {
                        long groupRowId = cursor.getLong(columnIndexData1);

                        DetailItem item = new DetailItem(DetailItem.TYPE_GROUP, dataId);
                        item.setLongData1(groupRowId);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, Identity.CONTENT_ITEM_TYPE)) {
                        String identity = cursor.getString(columnIndexData1);
                        String namespace = cursor.getString(columnIndexData2);

                        DetailItem item = new DetailItem(DetailItem.TYPE_IDENTITY, dataId);
                        item.setStrData1(identity);
                        item.setStrData2(namespace);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, Photo.CONTENT_ITEM_TYPE)) {
                        long photoId = cursor.getLong(columnIndexData14);

                        DetailItem item = new DetailItem(DetailItem.TYPE_PHOTO, dataId);
                        item.setLongData1(photoId);
                        details.add(item);
                    } else if (TextUtils.equals(mimeType, SipAddress.CONTENT_ITEM_TYPE)) {
                        String sipAddress = cursor.getString(columnIndexData1);
                        int type = cursor.getInt(columnIndexData2);
                        String label = cursor.getString(columnIndexData3);

                        DetailItem item = new DetailItem(DetailItem.TYPE_SIPADDRESS, dataId);
                        item.setStrData1(sipAddress);
                        item.setStrData2(label);
                        item.setIntData1(type);
                        details.add(item);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }

        if (details.size() > 0) {
            Collections.sort(details, new Comparator<DetailItem>() {
                @Override
                public int compare(DetailItem lhs, DetailItem rhs) {
                    return lhs.getType() - rhs.getType();
                }
            });
            return details;
        }
        return null;
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值