Как получить электронную почту от внутренних контактов в Android?

Я разрабатываю приложение, в котором мне нужно получать контакты и электронные письма из внутренней телефонной книги.

После некоторого поиска в Google я нашел следующий код для получения телефонного номера и имени.

Main.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);

        }
    }

Но здесь, чтобы получить идентификатор электронной почты, они используют отдельный курсор, как показано ниже.

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);  

        }
    }

Поскольку здесь мы получаем значения отдельно при добавлении значений в список для contact2, он отображает идентификатор почты contact7, а для contact3 показывает идентификатор почты contat5, как показано на рисунке ниже. введите здесь описание изображения

Итак, может ли кто-нибудь помочь мне, как получить номер телефона, почтовый идентификатор для того же контакта.


person Community    schedule 15.03.2013    source источник


Ответы (2)


Подход заключается в использовании LOOKUP_KEY, как описано в http://developer.android.com/guide/topics/providers/contacts-provider.html

Пример можно найти здесь http://android-er.blogspot.in/2012/12/access-contactscontractcommondatakindsp.html

Вы также можете добавить концепцию CursorJoiner для повышения производительности http://asyncindicator.blogspot.in/2012/12/cursorjoiner-and-matrixcursor.html

person scout    schedule 15.03.2013

попробуй так

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. почтовый адрес

person NagarjunaReddy    schedule 15.03.2013
comment
Здесь я столкнулся с проблемой получения электронной почты, так как следующий номер телефона и отображаемое имя работают хорошо для меня. можете ли вы помочь мне с получением идентификатора электронной почты. - person ; 15.03.2013