0

我正在开发一个应用程序,我需要从内部电话簿中获取联系人和电子邮件..

在谷歌搜索后,我找到了以下获取电话号码和名称的代码。

主.java

Cursor numcur = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,null, null);
    if (numcur != null) {
        while (numcur.moveToNext()) {
            name = numcur.getString(numcur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            number = numcur.getString(numcur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            phonenumarray.add(number);
            displaynamearray.add(name);

        }
    }

但是在这里获取电子邮件ID,他们使用单独的光标,如下所示..

Cursor emailcur = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, null,null, null);
    if (emailcur != null) {
        while (emailcur.moveToNext()) {
            email = emailcur.getString(emailcur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA1));
                emailarray.add(email);  

        }
    }

在这里,我们在向 listview 添加值时分别获取值,contact2 显示的是 contact7 邮件 id,而 contact3 显示的是 contat5 邮件 id,如下图所示。 在此处输入图像描述

那么,任何人都可以帮助我如何获取同一联系人的电话号码,邮件ID..

4

2 回答 2

0

试试这样

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
    while (phones.moveToNext()) {
    String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));  
    String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));


    ContactBean objContact = new ContactBean();   
    objContact.setName(name);    
    objContact.setPhoneNo(phoneNumber);   
    list.add(objContact);

看这个如何获取 Android 设备的主电子邮件地址

于 2013-03-15T12:02:48.613 回答
0

该方法是使用 http://developer.android.com/guide/topics/providers/contacts-provider.html 中解释的LOOKUP_KEY

可以在这里找到一个示例 http://android-er.blogspot.in/2012/12/access-contactscontractcommondatakindsp.html

您还可以引入 CursorJoiner 概念以获得更好的性能 http://asyncindicator.blogspot.in/2012/12/cursorjoiner-and-matrixcursor.html

于 2013-03-15T12:02:58.587 回答