如何从Android中的联系人列表中删除重复的联系人

如何从Android中的联系人列表中删除重复的联系人,第1张

概述请看一看 :- public static ArrayList<ContactsEntityBean> getContactDetails( Context mContext) { ArrayList<ContactsEntityBean> contactList = new ArrayList<ContactsEntityBean>(); 请看一看 :-
public static ArrayList<ContactsEntityBean> getContactDetails(            Context mContext) {        ArrayList<ContactsEntityBean> contactList = new ArrayList<ContactsEntityBean>();        ContentResolver cr = mContext.getContentResolver();        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null,null);        if (cur.getCount() > 0) {            while (cur.movetoNext()) {                String ID = cur.getString(cur                        .getColumnIndex(ContactsContract.Contacts._ID));                Cursor cur1 = cr.query(                        ContactsContract.CommonDataKinds.Email.CONTENT_URI,ContactsContract.CommonDataKinds.Email.CONTACT_ID                                + " = ?",new String[] {                            ID                        },null);                while (cur1.movetoNext()) {                    ContactsEntityBean contactsEntityBean = new ContactsEntityBean();                    // 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);                    contactsEntityBean.setname(name);                    contactsEntityBean.setEmail(email);                    if (email != null) {                        contactList.add(contactsEntityBean);                    }                }                cur1.close();            }        }        return contactList;    }

该方法是从同一用户返回多个联系人假设如果我已经为同一用户存储了abc @ gmail.com,abc @ gmail.com,因此它将返回abc@gmail.com\u0026amp; abc@gmail.com
但我只想要一个记录abc@gmail.com

public static ArrayList<SearchEntityBean> getContactEmailDetails(            Context mContext) {        ArrayList<SearchEntityBean> contactList = new ArrayList<SearchEntityBean>();        try {            ContentResolver cr = mContext.getContentResolver();            Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null);            if (cur.getCount() > 0) {                while (cur.movetoNext()) {                    String email = "";                    String ID = cur.getString(cur                            .getColumnIndex(ContactsContract.Contacts._ID));                    Cursor cur1 = cr.query(                            ContactsContract.CommonDataKinds.Email.CONTENT_URI,ContactsContract.CommonDataKinds.Email.CONTACT_ID                                    + " = ?",new String[] {                                ID                            },null);                    SearchEntityBean contactsEntityBean = new SearchEntityBean();                    while (cur1.movetoNext()) {                        // to get the contact names                        String name = cur1                                .getString(cur1                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.disPLAY_name));                        String image = cur1                                .getString(cur1                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_ID));                        String mail = cur1                                .getString(cur1                                        .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));                        if (mail != null) {                            if (!mail.equalsIgnoreCase(LoginPreferenceClass                                    .getEmailID(mContext)))                                email = email + mail + ",";                        }                        // Log.e("rohit","Contact  Email :" + email);                        contactsEntityBean.setname(name);                        contactsEntityBean.setimage(image);                    }                    if (email != null) {                        if (email.length() > 0) {                            if (email.split(",").length > 1) {                                contactsEntityBean.setMutipleEmail(true);                            }                            contactsEntityBean.setUserType("2");                            contactsEntityBean.setContactID(ID);                            contactsEntityBean.setEmail(email);                            contactList.add(contactsEntityBean);                        }                    }                    cur1.close();                }            }        } catch (Exception e) {            e.printstacktrace();        }        HashSet<SearchEntityBean> hs = new HashSet<SearchEntityBean>();        hs.addAll(contactList);        contactList.clear();        contactList.addAll(hs);        return contactList;    }
解决方法 你应该像下面这样修改你的ContactsEntityBean
public class ContactsEntityBean {    private HashSet<String> emails = new HashSet<String>();     public voID setEmail(String email) {        if (email == null)            return;         this.emails.add(email.trim());     }    public HashSet<String> getEmails() {        return this.emails;     }}

将关心重复的电子邮件…您可以使用相同的逻辑地址,手机等.

用以下代码替换你的ContactsEntityBean

public class ContactsEntityBean {    private HashSet<String> emails;    private HashSet<String> phones;    private HashSet<String> addresses;    private String contactID;    private boolean checked = false;    public ContactsEntityBean() {        this.emails = new HashSet<String>();        this.phones = new HashSet<String>();        this.addresses = new HashSet<String>();    }    public HashSet<String> getPhones() {        return phones;    }    public voID setPhones(String phone) {        if (phone == null)            return;        this.phones.add(phone.trim());    }    public HashSet<String> getAddresses() {        return addresses;    }    public voID setAddresses(String address) {        if (address == null)            return;        this.addresses.add(address.trim());    }    public voID setEmails(String email) {        if (email == null)            return;        this.emails.add(email.trim());    }    public HashSet<String> getEmails() {        return emails;    }    public String getContactID() {        return contactID;    }    public voID setContactID(String contactID) {        this.contactID = contactID;    }    public boolean isChecked() {        return checked;    }    public voID setChecked(boolean checked) {        this.checked = checked;    }}

而不需要关心重复.这将关心所有的事情..

总结

以上是内存溢出为你收集整理的如何从Android中的联系人列表中删除重复的联系人全部内容,希望文章能够帮你解决如何从Android中的联系人列表中删除重复的联系人所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1133522.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存