简体   繁体   English

如何从联系人列表中获取电子邮件ID,姓名和电话号码

[英]How to get email id, name and number from contact list

I am trying to fetch name, contact no and email id from contact list and store in array list and forward to server. 我正在尝试从联系人列表中获取姓名,联系人编号和电子邮件ID,并将其存储在数组列表中并转发给服务器。 I am storing name, phone and email id to contactNameArrayList , contactNumberArrayList and contactEmailIdArrayList . 我将姓名,电话和电子邮件ID存储到contactNameArrayListcontactNumberArrayListcontactEmailIdArrayList

Below code I got name, email and contact no but how to store specific email id to specific contact no? 在下面的代码中,我得到了姓名,电子邮件和联系方式,但是如何将特定的电子邮件ID存储到特定的联系方式?

private void getAllContacts() {
    ContentResolver contactResolver = context.getContentResolver();

    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 contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));               
            Log.e("TAG",  " Name: " + displayName+"==>phone Number==>"+number);
            contactNameArrayList.add(displayName);
            contactNumberArrayList.add(number);
            final String[] projection = new String[]{ContactsContract.CommonDataKinds.Email.DATA,
            ContactsContract.CommonDataKinds.Email.TYPE};            
            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,"EMAIL==>"+email);
            }

            emailCursor.close();
        }

        cursor.close();

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

Above code I call getAllcontact method. 上面的代码我调用getAllcontact方法。 I got number and name and email id and store in contactNameArrayList and contactNumberArrayList and contactEmailAddressList . 我得到了号码,姓名和电子邮件ID,并将其存储在contactNameArrayListcontactNumberArrayListcontactEmailAddressList But when I get email id response is like this: 但是当我收到电子邮件ID时,响应是这样的:

Name: efg==>phone Number==>(256) 655-555 名称:efg ==>电话号码==>(256)655-555
EMAIL==>abc@gmail.com 电子邮件==> abc@gmail.com
EMAIL==>pqr@gmail.com 电子邮件==> pqr@gmail.com
EMAIL==>xyz@gmail.com 电子邮件==> xyz@gmail.com
Name: abc==>phone Number==>(256) 655-555 名称:abc ==>电话号码==>(256)655-555
EMAIL==>abc@gmail.com 电子邮件==> abc@gmail.com
EMAIL==>pqr@gmail.com 电子邮件==> pqr@gmail.com
EMAIL==>xyz@gmail.com 电子邮件==> xyz@gmail.com
Name: pqr==>phone Number==>(987) 456-1238 名称:pqr ==>电话号码==>(987)456-1238
EMAIL==>abc@gmail.com 电子邮件==> abc@gmail.com
EMAIL==>pqr@gmail.com 电子邮件==> pqr@gmail.com
EMAIL==>xyz@gmail.com 电子邮件==> xyz@gmail.com
Name: xyz==>phone Number==>(987) 456-1238 名称:xyz ==>电话号码==>(987)456-1238
EMAIL==>abc@gmail.com 电子邮件==> abc@gmail.com
EMAIL==>pqr@gmail.com 电子邮件==> pqr@gmail.com
EMAIL==>xyz@gmail.com 电子邮件==> xyz@gmail.com

So how to get email id for specific phone and store in contactEmailArrayList . 因此,如何获取特定电话的电子邮件ID并将其存储在contactEmailArrayList As per above response conatactNameArrayList and contactNumberArrayList size same but ContactEmailAddressArrayList size is different. 根据上述响应, conatactNameArrayListcontactNumberArrayList大小相同,但ContactEmailAddressArrayList大小不同。 So please give me suggestion. 所以请给我建议。

make one class for getting email,name,no etc. 上一堂课以获取电子邮件,名称,否等。

public class UserContact {
private String userName,userEmail;
private boolean isSelect;

public boolean isSelect() {
    return isSelect;
}

public void setSelect(boolean select) {
    isSelect = select;
}

public UserContact(){}
public UserContact(String userName, String userEmail) {
    this.userName = userName;
    this.userEmail = userEmail;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getUserEmail() {
    return userEmail;
}

public void setUserEmail(String userEmail) {
    this.userEmail = userEmail;
}

} }

then in main activity make one list as global level of class . 然后在主要活动中列出一个清单作为全球班级。

    private List<UserContact> mContactList = new ArrayList<>();

then call getContact details. 然后致电getContact详细信息。

 /**
 * this method read device in contact name and email.
 */
public void getContact() {
    if (PermissionManager.checkPermission(getActivity(), READ_CONTACT)) {
        mContactList.clear();
        List<UserContact> contactList = new ArrayList<>();
        Cursor cur = getActivity().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        if (cur.getCount() > 0) {
            while (cur.moveToNext()) {
                String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                Cursor cur1 = getActivity().getContentResolver().query(
                        ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                        new String[]{id}, null);
                while (cur1.moveToNext()) {
                    //to get the contact names
                    String name = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    Log.e("Name :", name);
                    String email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                    Log.e("Email", email);
                    if (!TextUtils.isEmpty(email)) {
                        contactList.add(new UserContact(name, email));
                    }
                }
                cur1.close();
            }
        }
        mContactList = contactList;
        setAdapter();
    } else {
        PermissionManager.askForPermission(READ_CONTACT, getActivity());
    }
}

above method get only name and email you can modify your needs and add phone number code. 上述方法仅获取姓名和电子邮件,您可以修改您的需求并添加电话号码代码。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM