Java 如何从联系人列表中获取电子邮件地址?

Java 如何从联系人列表中获取电子邮件地址?,java,android,email,android-contacts,Java,Android,Email,Android Contacts,如何从联系人列表中获取电子邮件地址。下面的代码我得到了号码和姓名,并显示在列表中。但我想要号码、姓名和电子邮件地址,所以请检查下面的代码 ContentResolver contactResolver = context.getContentResolver(); Cursor c = contactResolver.query(ContactsContract.Contacts.CONTENT_URI, new String[] { ContactsContract.Contact

如何从联系人列表中获取电子邮件地址。下面的代码我得到了号码和姓名,并显示在列表中。但我想要号码、姓名和电子邮件地址,所以请检查下面的代码

 ContentResolver contactResolver = context.getContentResolver();

    Cursor c = contactResolver.query(ContactsContract.Contacts.CONTENT_URI, new String[] { ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER }, null, null, null);
    Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
            null, null, null);
    if(cursor.getCount()>0)
        while ( cursor.moveToNext()) {

            String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            // String photoUri = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.PHOTO_THUMBNAIL_URI));
            String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            //  String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));

            Log.e("TAG",  " Name: " + displayName+"==>phone Number==>"+number);

            contactNameArrayList.add(displayName);
            contactNumberArrayList.add(number);

            if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
            {


                Cursor pCur = contactResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { contactId }, null);


                while (pCur.moveToNext())
                {
                    String phone = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    String type = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
                    String s = (String) ContactsContract.CommonDataKinds.Phone.getTypeLabel(context.getResources(), Integer.parseInt(type), "");

                   // Log.e("TAG", s + " phone: " + phone);

                }
                pCur.close();
            }

            Cursor emailCursor = contactResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                    null,
                    null, null, null);

            while (emailCursor.moveToNext())
            {
                String email = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                int type = emailCursor.getInt(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
                String s = (String) ContactsContract.CommonDataKinds.Email.getTypeLabel(context.getResources(), type, "");

                Log.e("TAG", s + " email: " + email);
            }

            emailCursor.close();

        }  cursor.close();


    Log.e(TAG,"contactNameArrayList sIZE==>"+contactNameArrayList.size()+"contactNumberArrayList size==>"+contactNumberArrayList.size()+"contactEmailAddressArrayList size==>"+contactEmailAddressArrayList.size());

}
我为姓名、号码和电子邮件id创建了三个数组,但上面的代码我只得到了手机和姓名。当我在数组中添加姓名和手机号码时,请同时在电子邮件id数组中存储电子邮件id特定手机号码。因此,请帮助…

您可以使用此代码从联系人处获取电子邮件
public List getEmail(int contactId){
List emailStr=new ArrayList();
ContentResolver cr=context.getContentResolver();
游标emailCur=cr.query(
ContactsContract.CommonDataTypes.Email.CONTENT\u URI,
无效的
ContactsContract.CommonDataTypes.Email.CONTACT_ID+“=?”,
新字符串[]{String.valueOf(contactId)},null);
while(emailCur.moveToNext()){
String email=emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataTypes.Email.DATA));
emailStr.add(电子邮件);
System.out.println(“电子邮件”+电子邮件);
}
emailCur.close();
返回emailStr;
}

使用以下代码从一个联系人和电话簿中的所有联系人获取多个号码和电子邮件

private void getContactsFromPhoneBook() {

    String unique_id = ApplicationConstant.phone_id;
    System.out.println("Unique_ID  : " + unique_id);

    Contact_To_Sync contact_to_sync = new Contact_To_Sync();

    List<Contacts> AllContact_toSync = new ArrayList<>();

    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
            null, null, null, null);

    System.out.println("Contacts Count : " + cur.getCount());

    if (cur.getCount() > 0) {

        Contacts contacts = null;

        List<String> Phones;
        List<String> Emails;

        while (cur.moveToNext()) {

            contacts = new Contacts();
            Phones = new ArrayList<>();
            Emails = new ArrayList<>();

            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            String timeStamp = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP));




                contacts.setContact_id(id);
                contacts.setName(name);

                System.out.println("name : " + name + ", ID : " + id + " Status : " + timeStamp);

                // get the phone number
                Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
                        new String[]{id}, null);

                while (pCur.moveToNext()) {
                    String phone = pCur.getString(
                            pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    System.out.println("phone" + phone);

                    Phones.add(phone);

                }
                pCur.close();


                // get email and type

                Cursor emailCur = cr.query(
                        ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                        new String[]{id}, null);
                while (emailCur.moveToNext()) {
                    // This would allow you get several email addresses
                    // if the email addresses were stored in an array
                    String email = emailCur.getString(
                            emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                    String emailType = emailCur.getString(
                            emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));

                    Emails.add(email);

                    System.out.println("Email " + email + " Email Type : " + emailType);
                }
                emailCur.close();


                contacts.setEmails(Emails);
                contacts.setPhones(Phones);

                AllContact_toSync.add(contacts);


        }

        contact_to_sync.setContacts(AllContact_toSync);
        contact_to_sync.setPhone_device_name(unique_id);

        if (!contact_to_sync.getContacts().isEmpty()) {
            Sync_Contacts_To_Server(contact_to_sync);
        }

    }

}
private void getcontacts fromPhoneBook(){
字符串unique\u id=ApplicationConstant.phone\u id;
System.out.println(“唯一ID:+唯一ID”);
联系人_To_Sync Contact_To_Sync=新联系人_To_Sync();
列出AllContact_toSync=new ArrayList();
ContentResolver cr=getContentResolver();
Cursor cur=cr.query(Contacts contract.Contacts.CONTENT\u URI,
空,空,空,空);
System.out.println(“联系人计数:+cur.getCount());
如果(cur.getCount()>0){
联系人=空;
列出电话;
列出电子邮件;
while(cur.moveToNext()){
联系人=新联系人();
Phones=新的ArrayList();
电子邮件=新的ArrayList();
字符串id=cur.getString(cur.getColumnIndex(ContactsContract.Contacts._id));
字符串名称=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_name));
String timeStamp=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.CONTACT\u LAST\u UPDATED\u timeStamp));
contacts.setContact_id(id);
contacts.setName(name);
System.out.println(“名称:“+name+”,标识:“+ID+”状态:“+timeStamp”);
//获取电话号码
游标pCur=cr.query(ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,
ContactsContract.CommonDataTypes.Phone.CONTACT_ID+“=?”,
新字符串[]{id},null);
while(pCur.moveToNext()){
String phone=pCur.getString(
pCur.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
System.out.println(“电话”+电话);
电话。添加(电话);
}
pCur.close();
//获取电子邮件并键入
游标emailCur=cr.query(
ContactsContract.CommonDataTypes.Email.CONTENT\u URI,
无效的
ContactsContract.CommonDataTypes.Email.CONTACT_ID+“=?”,
新字符串[]{id},null);
while(emailCur.moveToNext()){
//这将允许您获得多个电子邮件地址
//如果电子邮件地址存储在数组中
String email=emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataTypes.Email.DATA));
String emailType=emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataTypes.Email.TYPE));
电子邮件。添加(电子邮件);
System.out.println(“电子邮件”+电子邮件+”电子邮件类型:“+电子邮件类型”);
}
emailCur.close();
联系人。设置电子邮件(电子邮件);
联系人。设置电话(电话);
AllContact_toSync.add(联系人);
}
联系人到同步。设置联系人(所有联系人到同步);
联系人到同步设置电话设备名称(唯一id);
如果(!contact_to_sync.getContacts().isEmpty()){
将联系人同步到服务器(联系人同步);
}
}
}

重复问题并给出大量答案。
private void getContactsFromPhoneBook() {

    String unique_id = ApplicationConstant.phone_id;
    System.out.println("Unique_ID  : " + unique_id);

    Contact_To_Sync contact_to_sync = new Contact_To_Sync();

    List<Contacts> AllContact_toSync = new ArrayList<>();

    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
            null, null, null, null);

    System.out.println("Contacts Count : " + cur.getCount());

    if (cur.getCount() > 0) {

        Contacts contacts = null;

        List<String> Phones;
        List<String> Emails;

        while (cur.moveToNext()) {

            contacts = new Contacts();
            Phones = new ArrayList<>();
            Emails = new ArrayList<>();

            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            String timeStamp = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP));




                contacts.setContact_id(id);
                contacts.setName(name);

                System.out.println("name : " + name + ", ID : " + id + " Status : " + timeStamp);

                // get the phone number
                Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
                        new String[]{id}, null);

                while (pCur.moveToNext()) {
                    String phone = pCur.getString(
                            pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    System.out.println("phone" + phone);

                    Phones.add(phone);

                }
                pCur.close();


                // get email and type

                Cursor emailCur = cr.query(
                        ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                        null,
                        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                        new String[]{id}, null);
                while (emailCur.moveToNext()) {
                    // This would allow you get several email addresses
                    // if the email addresses were stored in an array
                    String email = emailCur.getString(
                            emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                    String emailType = emailCur.getString(
                            emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));

                    Emails.add(email);

                    System.out.println("Email " + email + " Email Type : " + emailType);
                }
                emailCur.close();


                contacts.setEmails(Emails);
                contacts.setPhones(Phones);

                AllContact_toSync.add(contacts);


        }

        contact_to_sync.setContacts(AllContact_toSync);
        contact_to_sync.setPhone_device_name(unique_id);

        if (!contact_to_sync.getContacts().isEmpty()) {
            Sync_Contacts_To_Server(contact_to_sync);
        }

    }

}